关于Object.create方法

ES6最新的Object.create语法是 创造一个对象 可以传参,参数为一个对象,得到的结果是一个克隆的对象,

实际上 这是基于原型的克隆 分析如下:

  

var a={b:1};
var a1 = Object.create(a);
console.log(a1);

  在控制台上我们得到这样的结果:

  

 也就是说 a1本身是没有b属性的,为了验证这一点,我们可以采用 hasOWnProperty来检验(hasOwnProperty只会在当前对象中查找属性,不会在其原型上查找属性)

console.log(a1.hasOwnProperty('b')); //false

  此时打印 a1.b却能够取到值 1,说明a1的b属性是在其原型链a上找到的;

因此我们可以假设 Object.create是这样的一个函数(为了区分写成creates)

   

Object.prototype.creates = function(oldobj){
let newobj = {};
 newobj.__proto__ = oldobj;
  return newobj;
}

  尝试:

  

Object.prototype.creates = function(oldobj){
let newobj = {};
 newobj.__proto__ = oldobj;
  return newobj;
}
var a={b:1};
var a1=Object.creates(a);
console.log(a1)

 结果:

原文地址:https://www.cnblogs.com/tony-stark/p/11628792.html