让我们说这是我的代码
var myObject = {
varA: true,
varB: false,
init: function() {
//do something
},
doThis: function() {
//do this
function doThat(){
//do that
}
}
}
如何从对象的“外部”调用(如果可以)调用函数doThat()
(例如从页面上的onclick)?有可能吗?
我正在工作/黑客攻击由一名前任开发人员留下的一段代码,我不想重写srcatch中的所有内容,因此任何好的解决方法都被广泛接受!感谢
答案 0 :(得分:1)
你做不到。
函数doThat
不会暴露给任何外部作用域。除非你以某种方式更改doThis
以返回对doThat
的引用,否则除了在其他地方声明函数之外,无法调用它。
答案 1 :(得分:1)
如果不修改myObject
,就无法做到这一点; doThat
实际上是一个私人功能。有几种方法可以解决此问题,例如,使doThat
成为doThis
的属性。不推荐这样做,但你确实说你是黑客攻击。
答案 2 :(得分:0)
你做不到。 doThat
不是doThis
或myObject
的属性。您必须修改代码以公开所附的doThat
函数。
var myObj = {
doThis: function() {
console.log("doing this");
return function doThat() { console.log("doing that"); };
}
};
以上可以让你这样做:
myObj.doThis()(); // "doing this" / "doing that"