0
我試圖更改外部庫(ember-data)。但是我不能訪問我想改變的函數的範圍。在其他範圍內訪問函數,同時具有對同胞的訪問
我製成一個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"));
上部是「外部」 LIB,我不能改變。 下面是我的代碼,我可以訪問它。當我在ob對象上運行say方法時,它使用函數abcd。我想改變這個功能的工作。
如何訪問此範圍,更改abcd功能?
我想也許可以把它改變原型說或通過增加一個額外的功能ob,在該範圍內,這將改變abcd的原型。 – Lrdv 2014-10-30 08:28:54
不,你不能觸摸它存在於內存中的'abcd',它不在對象內或其他東西中,所以無法訪問它。你可以用'say'或'prefix'做你想做的事情,因爲它們是暴露的。 – Asgaroth 2014-10-30 15:48:59