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