有一天,我正在摆弄Javascript,并且我注意到我不能在原型函数中将原型写入对象。像这样:Javascript嵌套原型
var obj = function() { }
obj.prototype.First = function() {
this.prototype.Second = function() {
alert("Second Prototype");
}
}
obj.First();
obj.Second();
出于某种原因,第二个原型将无法工作,代码无法运行。我的语法是错误的还是有一些我不知道的原型限制?谢谢!
编辑:
我没有试图添加原型到原型......这没有多大意义。这就是我想要做的:将两个单独的原型添加到obj。原型2是在调用原型1时定义的。我认为this
将包含对象的引用,因此this.prototype
将与obj.prototype
相同,但它不能按预期工作。
为什么不直接使用'obj.prototype.Second = ...'? – 2014-09-30 00:12:52
你正在混淆函数和实例。 – SLaks 2014-09-30 00:39:06
'obj'是一个函数。 'obj.prototype'是函数的一个属性,只有当你用'new'调用函数时才会使用它。例如。 'var foo = new obj();'。 'foo.First'现在可用,因为'obj.prototype'是'foo'的原型。然而,'obj.First'不能工作,因为你从来没有在'obj'上创建'First'属性。 – 2014-09-30 20:53:03