多年来,我一直使用JavaScript中的原型继承来创建应用程序,现在开始尝试使用寄生式继承。尽管它的主要缺点(至少对我来说)是在创建对象层次结构时可能会在内存中创建多个方法副本,但我发现它的简单性和“new”不再必需的事实让我非常喜欢。然而,我遇到了“this”的问题。我看到的大多数例子只是表面上展示如何实现寄生式继承,如下所示:
function foo() {
return {
method1 : function() {...}
}
}
function bar() {
var that = foo();
that.method2 = function() {
//is "this" pointing to bar()?
}
return that;
}
在bar()对象的评论中我问过了,"this"是指bar()还是被限制在method2范围内?谢谢!