欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入淺析JavaScript中的constructor

 更新時間:2016年04月19日 15:39:27   作者:yansj1997  
constructor 屬性返回對創(chuàng)建此對象的數(shù)組函數(shù)的引用。本文給大家介紹JavaScript中的constructor ,需要的朋友參考下吧

定義和用法

constructor 屬性返回對創(chuàng)建此對象的數(shù)組函數(shù)的引用。

語法

object.constructor

constructor,構(gòu)造函數(shù),對這個名字,我們都不陌生,constructor始終指向創(chuàng)建當(dāng)前對象的構(gòu)造函數(shù)。

這里有一點需要注意的是,每個函數(shù)都有一個prototype屬性,這個prototype的constructor指向這個函數(shù),這個時候我們修改這個函數(shù)的prototype時,就發(fā)生了意外。如

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.getAge = function(){
return this.age;
}
Person.prototype.getName = function(){
return this.name;
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Person(name, age)
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas 

但是如果是這樣:

function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}
var p = new Person("Nicholas",18);
console.log(p.constructor); //Object()
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas 

結(jié)果constructor變了。

原因就是prototype本身也是對象,上面的代碼等價于

Person.prototype = new Object({
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}); 

因為constructor始終指向創(chuàng)建當(dāng)前對象的構(gòu)造函數(shù),那么就不難理解上面代碼p.constructor輸出的是Object了。

對于修改了prototype之后的constructor還想讓它指向Person怎么辦呢?簡單,直接給Person.prototype.constructor賦值就可以了:

Person.prototype = {
constructor:Person,
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}

以上所述是小編給大家介紹的JavaScript中的constructor ,希望對大家有所幫助!

相關(guān)文章

  • layer彈出層顯示在top頂層的方法

    layer彈出層顯示在top頂層的方法

    今天小編就為大家分享一篇layer彈出層顯示在top頂層的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 微信小程序淘寶首頁雙排圖片布局排版代碼(推薦)

    微信小程序淘寶首頁雙排圖片布局排版代碼(推薦)

    這篇文章主要介紹了微信小程序淘寶首頁雙排圖片布局排版代碼,本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • js實現(xiàn)移動端輪播圖效果

    js實現(xiàn)移動端輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)移動端輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Ajax異步文件上傳與NodeJS express服務(wù)端處理

    Ajax異步文件上傳與NodeJS express服務(wù)端處理

    本文主要介紹了Ajax異步文件上傳與NodeJS express服務(wù)端處理的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • 詳解JavaScript中的this硬綁定

    詳解JavaScript中的this硬綁定

    這篇文章主要為大家詳細(xì)介紹了JavaScript中的this顯示綁定和硬綁定,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的可以了解一下
    2022-10-10
  • js購物車實現(xiàn)思路及代碼(個人感覺不錯)

    js購物車實現(xiàn)思路及代碼(個人感覺不錯)

    提起購物車想必只有在一些購物網(wǎng)站上才可以看得到,下面為大家介紹下使用js實現(xiàn)的購物車,感興趣的朋友可以參考下
    2013-12-12
  • 在vscode上直接運行typescript的操作方法

    在vscode上直接運行typescript的操作方法

    在學(xué)習(xí)typescript的過程中發(fā)現(xiàn)在vscode上不能很好地的輸出typescript的運行結(jié)果,需要先將typescript編譯為javascript,在通過node執(zhí)行js文件得到結(jié)果,這篇文章給大家介紹如何在vscode上直接運行typescript,感興趣的朋友一起看看吧
    2023-12-12
  • js實現(xiàn)二代身份證號碼驗證詳解

    js實現(xiàn)二代身份證號碼驗證詳解

    本文給大家分享一段超級全面的二代身份證號碼驗證程序,由JS編寫而成,可以校驗身份證的地址碼、出生日期碼、順序碼和數(shù)字校驗碼。是身份證去偽存真的一大利器。
    2014-11-11
  • 微信小程序6位或多位驗證碼密碼輸入框功能的實現(xiàn)代碼

    微信小程序6位或多位驗證碼密碼輸入框功能的實現(xiàn)代碼

    這篇文章主要介紹了微信小程序6位或多位驗證碼密碼輸入框功能的實現(xiàn)代碼,實現(xiàn)思路很簡單,需要的朋友可以參考下
    2018-05-05
  • JS實現(xiàn)百度搜索接口及鏈接功能實例代碼

    JS實現(xiàn)百度搜索接口及鏈接功能實例代碼

    這篇文章主要介紹了JS實現(xiàn)百度搜索接口及鏈接功能實例代碼,需要的朋友可以參考下
    2018-02-02

最新評論