在
JavaScript中使用原型继承创建应用程序多年后,我开始探索使用寄生继承.尽管在创建对象层次结构时可能会在内存中创建多个方法副本,但至少对我而言,我发现它确实会因为它的简单性以及“新”变得不必要而与我产生共鸣.但是,我坚持用“这个”发生的事情.我在网上看到的大多数例子都只是在表面上展示如何实现寄生继承,如下所示:
function foo() { return { method1 : function() {...} } } function bar() { var that = foo(); that.method2 = function() { //is "this" pointing to bar()? } return that; }
正如我在bar()对象的注释中提到的那样,“this”是指bar()还是这个降级为method2的范围?
谢谢!
解决方法
快速测试表明这正确指向bar返回的对象:
function foo() { return { method1 : function() { return "spam" } } } function bar() { var that = foo(); that.method2 = function() { return this.method1(); } return that; } var b = bar(); b.method2(); // "spam"