无需引用“this”关键字即可访问对象的方法

时间:2013-09-09 17:03:19

标签: javascript

我正在探索为桌面应用程序编写的一些代码,它使用ScriptControl对象来访问全局对象的方法(不需要指定this关键字)。我想知道如何在不使用ScriptControl的情况下完成这项工作。以下是示例代码:

var i = function() {success()};

(function(f) {
    var o = {"success": function() {alert('success')}};
    f.apply(o); // fails because 'success' method is referenced inside 'f' by itself
})(i);

那么有什么办法可以在不指定this关键字的情况下访问父级的“成功”方法吗?

2 个答案:

答案 0 :(得分:1)

请勿使用.apply()

var i = function(obj) {obj.success()};

(function(f) {
    var o = {"success": function() {alert('success')}};
    f(o);
})(i);

告诉你什么,这是另一种方式。

var i = function() {i.o.success()};

(function(f) {
    var o = {"success": function() {alert('success')}};
    f.o = o;
    f();
})(i);

答案 1 :(得分:1)

您可以覆盖我引用的全局成功变量:

var success;

var i = function() {success()};

(function(f) {
    // Assuming you have access the the scope where `success` is defined
    // which is true for the global scope in this example
    success = function() {alert('success')};
    f();
})(i);

然而,这看起来很丑陋。如果您正在设计API,最好将回调函数作为参数传递给i