我知道 JavaScript 继承与典型的 OO 语言(Java、c++ 等)有很大不同。环顾四周,似乎也有许多不同的方法来创建类和类层次结构。因此,我对 JavaScript 继承感到困惑。
给定以下代码
if (!com) var com = {};
if (!com.foobar) com.foobar = {};
com.foobar.Foo = {
foo : "foo",
bar : "bar",
baz : function () {
return true;
}
};
为什么不允许以下内容?为什么 com.foobar.Foo 不是构造函数?是不是因为 Foo 不是一个函数,而是一个对象?
var baz = new com.foobar.Foo();
既然我不能做上述事情,我将如何创建一个新的 Foo?
如果我想扩展 Foo,我想我会这样做:
var bar = Object.create(com.foobar.Foo, {buz: {value: "neat"}});
.. 但是 bar 是 Foo 的子类型还是 Foo 的实例?我倾向于 Foo 的实例,因为以下打印件是“未定义”
console.log(bar.prototype);