ES6最新的Object.create語法是 創造一個對象 能夠傳參,參數爲一個對象,獲得的結果是一個克隆的對象,javascript
實際上 這是基於原型的克隆 分析以下:java
var a={b:1}; var a1 = Object.create(a);
console.log(a1);
在控制檯上咱們獲得這樣的結果:函數
也就是說 a1自己是沒有b屬性的,爲了驗證這一點,咱們能夠採用 hasOWnProperty來檢驗(hasOwnProperty只會在當前對象中查找屬性,不會在其原型上查找屬性)prototype
console.log(a1.hasOwnProperty('b')); //false
此時打印 a1.b卻可以取到值 1,說明a1的b屬性是在其原型鏈a上找到的;對象
所以咱們能夠假設 Object.create是這樣的一個函數(爲了區分寫成creates)blog
Object.prototype.creates = function(oldobj){ let newobj = {}; newobj.__proto__ = oldobj; return newobj; }
嘗試:ip
Object.prototype.creates = function(oldobj){ let newobj = {}; newobj.__proto__ = oldobj; return newobj; } var a={b:1}; var a1=Object.creates(a); console.log(a1)
結果:原型鏈