为什么Object对象中的某些属性不会在子对象中继承?

时间:2016-02-03 15:43:31

标签: javascript prototypal-inheritance

我在测试下面的代码时发现'keys'属性没有在我的对象中继承:

var obj = {x: 0, y:1};
console.log (Object.keys); //function

console.log (obj.keys); //undefined

因此,我的理解是某些属性(在Object中)不会在用户定义的对象中继承。为什么?这些属性只能通过Object对象获得吗?是否有任何hack来获取在用户定义的对象中不可用或继承的属性列表?

2 个答案:

答案 0 :(得分:1)

def cols_via_concat(df): df = pd.concat([df, df.apply(lambda row: pd.Series({i : i * row[i-100] for i in range(100, 150)}), axis=1)]) return df %timeit cols_via_concat(df) 1 loops, best of 3: 450 ms per loop <class 'pandas.core.frame.DataFrame'> Int64Index: 1000 entries, 0 to 999 Columns: 150 entries, 0 to 149 dtypes: float64(150) memory usage: 1.2 MB None Object.keys变量的静态属性,Objectobj.keys变量的属性,它将继承自obj。你会发现这会起作用:

Object.prototype

答案 1 :(得分:1)

仅继承.prototype对象作为原型。 静态类属性不是。

function Foo() {};
Foo.prototype.bar = function () {};
Foo.baz = function () {};

var f = new Foo();

f将继承bar,但不会继承baz