为什么 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.keysObject 变量的静态 属性,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