關於Object.create方法

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)

 結果:原型鏈

相關文章
相關標籤/搜索