0

我正在探索为桌面应用程序编写的一些代码,它使用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关键字的情况下访问父级的“成功”方法?

4

2 回答 2

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.

于 2013-09-09T17:47:07.720 回答
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);
于 2013-09-09T17:11:23.533 回答