【发布时间】:2015-09-16 04:20:59
【问题描述】:
我遇到的问题是,当实例化 B 类时,如果我在 B 上传入 options.foo,this.foo 将分配给 A 类而不是 B 类。
我想创建一个基类(在本例中为类 A),它将 this.foo 分配给派生类原型(在本例中为类 B)。
class A {
constructor(options = {}) {
this.foo = options.foo
}
}
class B extends A {
constructor(options = {}) {
super(options)
}
}
var b = new B()
console.log(b.prototype.foo) // undefined
【问题讨论】:
-
这怎么可能?
new B(...)返回单个对象。您是说该对象没有属性foo?我不清楚您所说的“分配给 A 类而不是 B 类”是什么意思。此处没有为 class 分配任何内容。 -
我不知道这是什么意思。没有任何东西被分配给“班级”。您正在构建的对象将其
foo属性设置为options.foo,无论其结果如何。 -
b甚至没有prototype属性。你期望它来自哪里?您的代码明确表示应该将foo分配给新创建的对象,即b.foo。如果你对this、构造函数和原型不是很熟悉,我推荐阅读You Don't Know JS: this & Object Prototypes。
标签: javascript class ecmascript-6