`this.prototype.constructor = this;`的目的是什么?

时间:2008-12-30 21:09:18

标签: javascript

在ASP.NET ajax库中,有一行让我感到困惑。

Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) {

//..

this.prototype.constructor = this;

//..
}

我知道(this.prototype.constructor === this) == true,那么这条线的意义何在?我删除该行,并使用一些代码测试库。看来没关系。这条线的目的是什么?

2 个答案:

答案 0 :(得分:1)

我不熟悉asp.net libs,但是:

Javascript中的常见模式,特别是在尝试模拟基于类的系统时,是将原型对象重新分配给另一个对象的实例,而不是仅仅向JS提供的原型对象添加属性。这个问题的一个问题是它给你错误的构造函数 - 除非重置一个'正确'值。

答案 1 :(得分:1)

我的猜测是,在this.prototype.constructor = this;之前的某个时刻,某个对象被分配给了原型属性,后者覆盖了prototype.constructor。这个技巧通常在轻松继承对象原型时使用,但仍然可以调用instanceof来查看对象实例是否属于某种类型。

在这种情况下很难说出比这更具体的内容和一个严重的问题,但它可能对某些人有用。