为什么 Object 对象的一些属性在子对象中没有被继承?
Why some of the properties from the Object object are not inherited in sub-objects?
我发现 'keys' 属性 在我的对象中没有被继承,当测试下面的代码时:
var obj = {x: 0, y:1};
console.log (Object.keys); //function
console.log (obj.keys); //undefined
因此,我的理解是某些属性(在对象中)不会在用户定义的对象中继承。为什么?这些属性只能通过 Object 对象使用吗?是否有任何 hack 来获取用户定义对象中不可用或继承的属性列表?
Object.keys
是 Object
变量的静态 属性,obj.keys
是 属性 og obj
变量,这将继承自 Object.prototype
。你会发现这行得通:
console.log(obj.hasOwnProperty); //function
只有.prototype
对象作为原型被继承。 静态 class 属性 不是。
function Foo() {};
Foo.prototype.bar = function () {};
Foo.baz = function () {};
var f = new Foo();
f
将继承 bar
,但不会继承 baz
。
我发现 'keys' 属性 在我的对象中没有被继承,当测试下面的代码时:
var obj = {x: 0, y:1};
console.log (Object.keys); //function
console.log (obj.keys); //undefined
因此,我的理解是某些属性(在对象中)不会在用户定义的对象中继承。为什么?这些属性只能通过 Object 对象使用吗?是否有任何 hack 来获取用户定义对象中不可用或继承的属性列表?
Object.keys
是 Object
变量的静态 属性,obj.keys
是 属性 og obj
变量,这将继承自 Object.prototype
。你会发现这行得通:
console.log(obj.hasOwnProperty); //function
只有.prototype
对象作为原型被继承。 静态 class 属性 不是。
function Foo() {};
Foo.prototype.bar = function () {};
Foo.baz = function () {};
var f = new Foo();
f
将继承 bar
,但不会继承 baz
。