我正在尝试更改一个外部库(ember数据)。但是我无法访问要更改的功能范围。

我做了一个js小提琴,上面有一个解释和一个非常简化的用例:
http://jsfiddle.net/yr5Lmzyk/3/

// =========== External libary (cannot be changed)---------------------------
var ex = {};
(function (__exp__){
    ob = {
        prefix: 'object-prefix',
        say: function(word){
             return this.prefix + "|" + abcd(word);
        }
    };

    function abcd(a){
     return a + "|function-postfix";
    }
__exp__.ob = ob;
}(ex));

var ob = ex.ob;

// ================= Available/ ajustable code ---------------------
// i want to change the working of the abcd function.
// in the real case abcd is used in many functions of ob, but i only want to change that function.
$("#content").html(ob.say("call-parameter"));


上部是“外部”库,我无法更改。
下部是我的代码,在这里我可以访问。当我在ob对象上运行say方法时,它将使用abcd函数。我想更改此功能的工作。

我如何访问此作用域以更改abcd函数?

最佳答案

abcd函数是私有的,您不能更改它,可以更改say函数,但是无法访问未公开的内容

关于javascript - 可以访问其他范围的功能,同时可以访问同级对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26639274/

10-11 13:12