Javascript建構函式

2021-09-22 13:44:57 字數 1747 閱讀 3872

建構函式注意事項:

1.預設函式首字母大寫

2.建構函式並沒有顯示返回任何東西。new 操作符會自動建立給定的型別並返回他們,當呼叫建構函式時,new會自動建立this物件,且型別就是建構函式型別。

3.也可以在建構函式中顯示呼叫return.如果返回的值是乙個物件,它會代替新建立的物件例項返回。如果返回的值是乙個原始型別,它會被忽略,新建立的例項會被返回。

function

person

(name)

varp1=new

person(

'john');

等同於:

function

person

(name)

varp1=

person(

"john");

4.因為建構函式也是函式,所以可以直接被呼叫,但是它的返回值為undefine,此時建構函式裡面的this物件等於全域性this物件。this.name其實就是建立乙個全域性的變數name。在嚴格模式下,當你補通過new 呼叫person建構函式會出現錯誤。

5.也可以在建構函式中用object.defineproperty()方法來幫助我們初始化:

function

person

(name),

set:function

(newname),

enumerable

:true

,//可列舉,預設為false

configurable

:true

//可配置

});

}

varp1=new

person(

'john');

6.在建構函式中使用原型物件

//比直接在建構函式中寫的效率要高的多

person.prototype.

sayname

=function

();

但是如果方法比較多的話,大多人會採用一種更簡潔的方法:直接使用乙個物件字面形式替換原型物件,如下:

person.prototype=,

tostring

:function()

};這種方式非常流行,因為你不用多次鍵入

person.prototype,但有乙個***你一定要注意:

使用字面量形式改寫了原型物件改變了建構函式的屬性,因此他指向object而不是person。這是因為原型物件具有乙個constructor屬性,這是其他物件例項所沒有的。當乙個函式被建立時,它的prototype屬性也被建立,且該原型物件的constructor屬性指向該函式。當使用物件字面量形式改寫原型物件時,其constructor屬性將被置為泛用物件object.為了避免這一點,需要在改寫原型物件的時候手動重置constructor,如下:

person.prototype=,

tostring

:function()

};再次測試:

p1.constructor===person

true

p1.constructor===object

false

p1 instanceof person

true

JavaScript(建構函式)

ecmascript中的建構函式可以用來建立特定型別的物件。像object和arrray這樣的原生建構函式,在執行時會自動出現在執行環境中。也可以自定義建構函式,用來自定義物件型別的屬性和方法。function person name,age,job var person new person ma...

Javascript 建構函式與普通函式

建構函式與普通函式從本質上是沒有區別的,只不過建構函式可以通過new關鍵字來進行構造例項,從而使例項擁有函式的方法和屬性。建構函式的執行過程 eg var children new parent 1.建立乙個物件 children,children 可以成為是person建構函式的例項。2.建立乙個...

理解javascript建構函式 原型

函式是function型別的例項,即函式也是物件,故函式也擁有自己的方法,可增強其行為特性。建構函式的首字母大寫,且建構函式在被呼叫時,會經歷幾個步驟,建立乙個新物件,將建構函式的作用域賦給新物件,執行建構函式 返回新物件。建構函式 function dog food var dog new dog...