对于以下代码,
var customer={
name: "Tom Smith",
speak: function(){
return "My name is " + this['name'];
},
address: {
street: '123 Main St',
city: "Pittsburgh",
state: "PA"
}
};
以下是我对客户对象的可视化,
我的问题:
customer
对象是否仅继承Object.prototype
的属性(内置函数)?
Object
函数类型对象的属性(内置函数)是否也用于继承?
如果是,customer
对象继承Object
属性的语法是什么?
答案 0 :(得分:2)
以下是我对客户对象的可视化
如果您使用术语 [[prototype]] 而不是 __ proto __ 会更好 - 正如您所看到的,.__proto__
只是一个吸气剂/ setter继承自Object.prototype
。
客户对象是否仅继承
Object.prototype
的属性(内置函数)?
是。虽然你可以add your own properties to Object.prototype
,但它们也会被继承,它不仅仅是内置的。
Object的属性(内置函数)是否也用于继承?
没有。它们是静态函数,应该以对象作为参数调用,而不是对象方法。
客户对象继承对象属性的语法是什么?
Object
是一个函数,通常你不希望继承它。如果您真的想要,可以使用Object.create(Object)
。
此外,ES6添加了一种新的方法,因为class
es也从其父级继承静态方法:
class MyObject extends Object {
static myCreate(x) {
return this.create(x);
}
}