上面說錯了:
第一種:
var a = {x:1};
var b = Object.create(a);
console.log(b);//輸出:{};
console.log(b.__proto__);//輸出:{x:1}
第二種:
如果用 b =new object(a)
connsole.log(b);//輸出:{x:1}
congsole.log(b.__proto__);//輸出:{}
只要注意區(qū)分__proto__和prototype就可以了,希望對你有幫助
var a = new Object();//a的原型指向Object的prototype屬性,和b沒關(guān)系
比如說: var a =new Object({x:1}),這里b = {x:1},那么a和b都是Object的實例,a和b的原型都是Object.prototype;
a==b;//true
a===b;//false
表示a和b是兩個不同的對象,他們的屬性一樣,a創(chuàng)建了一個b的副本,就相當(dāng)于兩個一模一樣的蘋果,僅僅是長得一樣而已,但是它們是不同的對象
2015-06-07
Object.create() 是E5的一個新特性哦,其實可以理解為繼承一個對象,create方法有兩個參數(shù)
一個是要繼承的對象的原型,如果沒有就傳null,第二個參數(shù)是對象的屬性描述符,這些都是E5才有的~
具體對象的原型,屬性描述符這些概念可以先去百度學(xué)習(xí)下哈。我就不詳細(xì)說了,希望能幫到你
2017-09-02
請教下你們怎么懂這些的,我學(xué)著很累,聽不懂,咋辦
2017-08-21
使用new Object()創(chuàng)建出來的對象和傳入的參數(shù)對象是恒等的
2017-06-30
詳情解說,看圖。
2017-03-24
以上三者相同。
2017-03-01
回復(fù) zhangcl:挖墳說一下。首先,var a=new Object();a是構(gòu)造函數(shù)Object創(chuàng)建的對象。所以,a不存在prototype屬性。只有函數(shù)存在prototype屬性,而任何被創(chuàng)建的對象,包括函數(shù)都有一個__proto__屬性,構(gòu)成了對象的原型鏈。所以var b = Object.create(a.prototype); 這句話就是錯的。a.prototype根本不存在。alert一下顯示undifined。這句話直接寫成var b=Object.create(a);就可以了。b的原型對象是a。Object.creat的實現(xiàn)就像樓上說的。而假如像樓上所說,第二句想寫出 var b=Object.create(a.constructor.prototype)。那么a.constructor.prototype=Object.prototype。實際上第二句就和var b=new Object()差不多了。但是還是存在點小問題。因為Object.create的實現(xiàn)類似于:
所以,?var b=Object.create(a.constructor.prototype);這句b雖然是Object的對象,卻沒有被構(gòu)造函數(shù)Object初始化。就這點小區(qū)別。不知道我理解的對不對。
2016-06-12
簡單來講,new Object()是一種通過構(gòu)造函數(shù)來創(chuàng)建object的方式,而Object.create(proto, [ propertiesObject ])
不需要通過構(gòu)造函數(shù)就可以創(chuàng)建一個object,Object.create()的第一個參數(shù)是必須要的,第二個參數(shù)可選。其實Object.create()內(nèi)部依然是通過new一個構(gòu)造函數(shù)的方式來實現(xiàn)的,它有構(gòu)造函數(shù),不過這個構(gòu)造函數(shù)是隱式存在的,看一下使老舊瀏覽器支持Object.create方法的“polyfill”就可以對它們之間的區(qū)別一目了然了:
如果還有不清楚的,歡迎留言討論。
2016-04-25
var?a?=?new?Object(b);????代表a的原型指向b;
var?a?=?new?Object();?????代表a的原型指向Object吧。?
2016-03-07
a.prototype 返回的是undefine, 應(yīng)該是a.constructor.prototype?
2016-01-14
1L那位同學(xué)說錯了吧,var a=new Objiect(); //a具有原型Object.prototype