Javascript 回调,引用自己的对象

标签 javascript callback

下面是我的问题的一个非常简化的版本。在不更改对象“o”的定义且不使用名称“obj”的情况下,我如何在 foo.h 中引用 obj。

var obj = {
    foo: function () {
        alert(this.greet); // => undefined, obj.greet works but not feasible for my case
    },
    greet: "hi"
};

var o = {
    m: obj.foo
};

o.m();

最佳答案

创建一个使用正确上下文调用旧函数的新函数。 The bind method将在足够现代的浏览器中为您完成此操作。

var o = {
    m: obj.foo.bind(obj)
};

如果你想支持旧版浏览器:

var o = {
    m: (function (context) { 
        return function () { 
            context.foo(); 
        };
    }(obj))
};

关于Javascript 回调,引用自己的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21162865/

相关文章:

javascript resolveLocalFileSystemURL 触发成功和失败回调

javascript - 滚动 div 元素时防止整页滚动

javascript - 最快的 DOM 插入

javascript - Angular : Creating questions using a directive

javascript - 如何将点符号转换为字符串?

reactjs - 使用react-router将回调函数作为prop传递给不同的路由

javascript - 在 iframe 中通过 javascript 在 flash 上注册点击,无需使用 wmode(跨域)

c++ - SDL视频显示窗口 : how to attach a window close event callback

javascript - 回调 hell 和嵌套 promise 之间的区别

javascript - 了解函数(错误、数据)回调