在object .create中使用对象字面量和函数表达式有区别吗?

Is there a difference between using object literals vs function expressions with Object.create?

本文关键字:函数 表达式 有区别 create object 对象      更新时间:2023-09-26

使用Object时。创建,原型是对象文字还是函数表达式有区别吗?

在这个例子中,原型是定义为函数还是对象有关系吗?

var CircleObj = {
    x: 0,
    y: 0
}
var CircleFunc = function(){
  this.x = 0; 
  this.y = 0;
}
var myCircleObj = Object.create(CircleObj, {
  x: { writable: true, configurable:true, value: 1 },
  y: { writable: true, configurable:true, value: 1 }
});
var myCircleFunc = Object.create(CircleFunc, {
  x: { writable: true, configurable:true, value: 2 },
  y: { writable: true, configurable:true, value: 2 }
});

编辑

我在一开始就通过重写属性来混淆这个问题。使用对象。不带属性的Create显然只适用于对象。

var myCircleObj = Object.create(CircleObj) 
var myCircleFunc = Object.create(CircleFunc)

对象。create第一个参数意味着新对象将继承这些属性。在您的示例中:

案例1:新对象将继承x &从CircleObj获取属性

案例2:新对象不会继承x &

但是因为你重写了x &y属性在你的对象。创建在case 1 &2. 你没有正确使用它们。

所以传递一个Object字面量或new Object()给Object。