在打字稿中阅读装饰器的文档(我在这个片段上进行了简化:
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}
当执行@sealed时,它将密封构造函数及其原型。
constructor.prototype
指向什么?这种典型的继承有时会让人感到困惑。
答案 0 :(得分:1)
你可以通过查看一个简单的例子和结果javascript来检查出来:
class A {
fn1() { }
}
class B extends A {
fn2() { }
}
已编译的js:
var A = (function () {
function A() {
}
A.prototype.fn1 = function () { };
return A;
}());
var B = (function (_super) {
__extends(B, _super);
function B() {
return _super !== null && _super.apply(this, arguments) || this;
}
B.prototype.fn2 = function () { };
return B;
}(A));
装饰器函数接收的constructor
是A
或B
,它们是构造函数,如果在开发人员控制台中键入A
,您将看到:< / p>
function A() {
}
B
的类似内容:
function B() {
return _super !== null && _super.apply(this, arguments) || this;
}
constructor.prototype
部分引用了该类的原型,因此A.prototype
将显示:
Object {fn1: function, constructor: function}
B.prototype
将显示:
A {constructor: function, fn2: function}