久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日焦點 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 軟件開發 » 正文

對象字面量和構造函數創建對象詳解

放大字體  縮小字體 發布日期:2018-02-10  來源:企業800網  作者:新格網  瀏覽次數:94  【去百度看看】
核心提示:對象字面量創建的是對象,而構造函數創建的是函數對象。為了幫助理解,希望本文能幫助到大家。
對象字面量創建的是對象,而構造函數創建的是函數對象。為了幫助理解,希望本文能幫助到大家。

1、向原型鏈上添加屬性為什么用prototype,而一般不用__proto__

2、javascript為什么要設置一個函數對象,他的作用是什么

3、更深層次了解原型鏈

如下兩段代碼,分別是使用對象字面量和構造函數創建對象。

代碼段1:

var a={"name":"nihao"};
console.log(a);

代碼段2:

var a=function(name){
    this.name=name;
};
var b= new a("nihao");
console.log(b);

首先,我們需要知道:

1、函數對象的原型是對象(原型鏈為:實例,通過new構造函數-->函數對象-->對象-->null)

2、函數有prototype屬性,而對象沒有

然后,在某些場景下,我們有一個公共的屬性,需要多個新建的對象去繼承,這個時候就能體現出函數對象的特點了,我們看下代碼:

1、使用構造器

var a=function(name){
    this.name=name;
};
a.prototype.sex="nan";
var b= new a("nihao");
console.log(b);
console.log(b.name);
console.log(b.sex);

var c=new a("test");
console.log(c);
console.log(c.name);
console.log(c.sex);

如上,可以很容易的實現屬性或方法的繼承,在控制臺打印上述代碼,可以很容易看到原型鏈是這樣的(以對象b為例):對象b-->函數對象-->對象-->null

2、使用對象字面量

使用對象字面量創建的是對象,他沒有prototype屬性,所以我們只能通過__proto__,但是在對象上使用__proto__可能會導致一些問題的出現。代碼如下:

var a={"name":"nihao"};
a.__proto__.sex="nan";
console.log(a);
console.log(a.name);
console.log(a.sex);
var b={};
console.log(b);
console.log(b.name);
console.log(b.sex);

如上,運行上面代碼,可以很容易得到運行結果:

{name: "nihao"} nihao nan {} undefined nan

哎,這個就很奇怪了,b對象明明設置的為空?這是因為在執行a.__proto__.sex="nan";時候,程序向對象的原型上添加了一個屬性sex,而b是對象也是繼承的對象的原型,多以導致了這個問題的出現。

最后,總結下來就是:

函數對象是繼承自對象的原型,有了函數對象,我們可以給函數的原型添加屬性,這些屬性保存在函數對象中,但是又不會影響其他對象。

相關推薦:

淺談js之字面量、對象字面量的訪問、關鍵字in的用法

Javascript中對這兩種對象字面量(json)的操作方式有何不同?

Javascript 中 class、構造函數、工廠函數詳解

以上就是對象字面量和構造函數創建對象詳解的詳細內容,更多請關注php中文網其它相關文章!

 
關鍵詞: 創建,函數,構造
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 皖ICP備2021004516號-14
企業800網 · 提供技術支持