使用Object.create时,原型是对象文字还是函数表达式会有所不同吗?
在这个例子中,原型是定义为函数还是对象是否重要?
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 }
});
编辑
我在整个过程中重写了这些属性让我感到困惑。 使用不带属性的Object.create可以明显看出它只适用于对象。
var myCircleObj = Object.create(CircleObj)
var myCircleFunc = Object.create(CircleFunc)
答案 0 :(得分:1)
Object.create 1st参数表示新Object将继承这些属性。在您的示例中:
案例1: 新对象将继承x&来自CircleObj的y属性
案例2: 新对象不会继承x&来自CircleFunc的y属性,因为它可以被称为带或不带new的函数。
但是因为你正在压倒x&在案例1和案例1中的Object.create中的y属性你没有正确使用它们。
因此,将Object文字或新的Object()传递给Object.create的第一个参数,以便从中继承它的属性。