好吧,下面給出Javascript
代碼,我不想修改:在對象的原有範圍調用功能
(function() {
function iWantToCallThis(){
// Do some stuff
}
window.SomeObject = {
theirfunc = function(){
// Do some stuff
},
otherFuncIDontWantToCall = function(){
// This works, but don't want to call this function.
iWantToCallThis();
// does other stuff
}
}
}());
如何訪問iWantToCallThis()
通過SomeObject的範圍,像這樣:
window.SomeObject.theirfunc = (function (func){
iWantToCallThis();
func.apply(this, arguments);
} (win.SomeObject.theirfunc));
即使我認爲該功能在技術上運行在其原始範圍內,但我無權訪問iWantToCallThis()
。有沒有辦法在不編輯原始源代碼的情況下訪問該功能?
謝謝!
你不能。 'iWantToCallThis'是本地執行您的自我執行匿名功能。這不是一個財產。 – Blender 2013-05-10 21:35:13
恕我直言,Douglas Crockford的「[JavaScript中的私人成員](http://javascript.crockford.com/private.html)」是關於此主題的權威性文章。它應該有助於說服你,除了通過特權方法之外,私人成員是外部無法訪問的。 – 2013-05-12 01:15:05
偉大的文章@甜菜根 - 甜菜根,介意發佈作爲答案,我會接受它?絕對可以更好地深入解釋我遇到的情況。 – MatthewKremer 2013-05-13 13:21:26