美文网首页
Object.create(),new Object()的区别

Object.create(),new Object()的区别

作者: agamgn | 来源:发表于2020-03-29 09:33 被阅读0次

Object.create()方法是ECMAScript5中新增的,用来规范化原型式继承的。使用现有的对象来提供新创建的对象的__proto__
这个方法接收两个参数,一个是用作新对象原型的对象,和一个为新对象定义额外属性的(可选)对象。

let persion={
    name:"agamgn",
    friends:["aga","mgn"]
};
let onePersion=Object.create(persion);
console.log("onePersion:",onePersion);//onePersion: {}
console.log("Object.getPrototypeOf(onePersion):",Object.getPrototypeOf(onePersion));//Object.getPrototypeOf(onePersion): { name: 'agamgn', friends: [ 'aga', 'mgn' ] }
onePersion.name="jack";
onePersion.friends.push("Nick");
console.log("onePersion:",onePersion);//onePersion.name: jack
console.log("Object.getPrototypeOf(onePersion):",Object.getPrototypeOf(onePersion));//Object.getPrototypeOf(onePersion): { name: 'agamgn', friends: [ 'aga', 'mgn', 'Nick' ] }
console.log("onePersion.name:",onePersion.name);//onePersion.name: jack
console.log("onePersion.friends:",onePersion.friends);//onePersion.friends: [ 'aga', 'mgn', 'Nick' ]

通过案例来看区别:


demo

上面例子中可以看出:

  • new Object() 通过构造函数来创建对象, 添加的属性是在自身实例下。
  • Object.create() 创建对象添加的属性是在原型下。

再看一个例子:


demo2

可以看出他们在创建空对象时不同:

  • 当用构造函数或对象字面量方法创建空对象时,对象时有原型属性的,即有proto;
  • 当用Object.create()方法创建空对象时,对象是没有原型属性的。

相关文章

网友评论

      本文标题:Object.create(),new Object()的区别

      本文链接:https://www.haomeiwen.com/subject/xcrjuhtx.html