javascript - 在 Javascript(和 jQuery.extend)中限定 "this"

标签 javascript jquery this

很抱歉,如果有人回答了这个问题,但我无法搜索它……我认为这是一个很难搜索的东西!

假设我有这个:

var MyPrototype = function() { this.init(); }
$.extend(MyPrototype.prototype, {
    a: 5,
    init: function() {
        var thing = new SomeOtherClass();
        thing.meth = this.meth;
        // thing.meth() is called somewhere within thing;
    },
    meth: function() {
        alert(this.a);
    }
}

基本上,我正在处理另一个类,它使用自己的方法作为回调,例如我应该用我自己的功能覆盖它们。但是我需要在执行此操作时保留 this 的正确范围(我唯一关心的是 SomeOtherClass 传递给回调的内容;状态中没有任何内容)。

正如您可能想象的那样,这是行不通的,因为 thing 没有 a 属性!不过,我对 Javascript 作用域的复杂性还不够熟悉,不知道如何使 this 引用我想要的内容!

最佳答案

在这里结合其他两个答案,这样您就不必重写您的 meth 函数,我会这样做:

    var me = this;
    thing.meth = function() {
        MyPrototype.meth.apply(me, arguments);
    };

关于javascript - 在 Javascript(和 jQuery.extend)中限定 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190779/

相关文章:

javascript - 当 Node.js 作为脚本运行时, `this` 的上下文是什么?

javascript - 我想在点击按钮时更改按钮上的文本 5 次

javascript - 如何根据 JQuery 选择的另一个选项隐藏\显示选项的特定值?

javascript - 错误 : Jmeter: Typed variable declaration : Class or variable not found: org. openqa.selenium:在第 4 行

Javascript:如何添加和删除标签 onscroll 事件的类

javascript - 验证带有复选框和文本字段的动态 php 网格

php - 函数中的 symfony 重定向

c++ - 如何将 "this"指针传递给全局函数

javascript - 我该如何重构这段 JavaScript 代码?

javascript - 无法在phonegap cordova应用程序中获取语言