22 建構函式

2021-10-06 20:41:15 字數 2578 閱讀 8294

本文是在學習js所做的學習筆記,所有筆記內容請看:js學習筆記

<

!doctype html>

"en"

>

"utf-8"

>

title<

/title>

建構函式就是乙個普通的函式,建立方式和普通函式沒有區別,

不同的是建構函式習慣上首字母大寫

建構函式和普通函式的區別就是呼叫方式的不同

普通函式直接呼叫,而建構函式需要使用new關鍵字呼叫

建構函式的執行流程,

1.會立刻建立乙個新的物件

2.將新建的物件設定為函式中的this

,在建構函式中可以使用this來

引用新建的物件

3.逐行執行函式中的**

4.將新建的物件作為返回值返回

使用同乙個建構函式建立的物件,我們成為一類物件,也將乙個建構函式

成為乙個類。

我們將通過乙個建構函式建立的物件,稱為是該類例項

this的情況:

1.當以函式的形式呼叫時,this就是window

2、當以方法的形式呼叫時,誰呼叫方法this就是誰

3.當以建構函式的形式呼叫時,this就是新建立的那個物件

function

person

(name,age,gender)

}var per =

newperson

('swk',18

,'男');

var per2=

newperson

('ytj',16

,'女');

function

dog(

)var dog=

newdog()

; 使用instanceof 可以檢查乙個物件是否是乙個類(建構函式)的例項

語法:物件 instanceof 建構函式

如果是,則返回true

,否則返回false

所有的物件都是object的後代

任何物件和instanceof 檢查都會返回true

<

/script>

<

/head>

<

!doctype html>

"en"

>

"utf-8"

>

title<

/title>

建立乙個person建構函式

-在person建構函式中,為每乙個物件新增乙個sayname方法

目前我們的方法是在建構函式內部建立的,也就是建構函式每執行

一次就會建立乙個新的sayname方法

也就是所有例項的sayname都是唯一的。

這樣就導致了建構函式執行一次就會建立乙個新的方法,

執行1000次就會建立1000個新的方法,而1000個方法都是一樣的

*/// 在每個函式中定義乙個方法

function

person

(name,age,gender)

}// 將sayname方法在全域性作用域中定義

function

fun(

)function

person

(name,age,gender)

}// 建立person的例項

var per1=

newperson

('swk',18

,'男')/*

將函式定義在全域性作用域中,汙染了全域性作用域的命名空間

而且定義在全域性作用域中也很不安全

*/<

/script>

<

/head>

<

/body>

<

!doctype html>

"en"

>

"utf-8"

>

title<

/title>

/* 建立乙個person建構函式

-在person構造還能輸中,為每乙個物件新增乙個sayname方法

目前我們的方法是在建構函式內部建立的,也就是建構函式每執行

一次就會建立乙個新的sayname方法

也就是所有例項的sayname都是唯一的。

這樣就導致了建構函式執行一次就會建立乙個新的方法,

執行1000次就會建立1000個新的方法,而1000個方法都是一樣的

*/// 在每個函式中定義乙個方法

function

person

(name,age,gender)

}// 將方法寫在全域性作用域中那個,如下

function

fun(

)function

person

(name,age,gender)

}// 建立person的例項

var per1=

newperson

('swk',18

,'男'

)

將函式定義在全域性作用域中,汙染了全域性作用域的命名空間

而且定義在全域性作用域中也很不安全

c primer 學習筆記22類的建構函式

建構函式是特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。class sales item private std string isbn unsigned units sold double revenue 建構函式可以被過載 可以...

分離構造器 2 2

通過new操作符構建乙個物件,一般經過四步 a.建立乙個新物件 b.將建構函式的作用域賦給新物件 所以this就指向了這個新物件 c.執行建構函式中的 d.返回這個新物件 最後一點就說明了,我們只要返回乙個新物件即可。其實new操作符主要是把原型鏈跟例項的this關聯起來,這才是最關鍵的一點,所以我...

建構函式 拷貝建構函式 賦值建構函式

class和struct很大乙個區別在於,c除了成員的訪問控制許可權,struct中的成員預設是public,而class中的field預設是private class還有乙個special的地方是它有建構函式 constructor。建構函式是class中的一員,和成員變數 其他成員函式一起構成乙...