2014-08-28 19 views
-1

我試圖調用嵌套在原型方法中的函數。當我嘗試引用這個嵌套函數時,我得到了undefined。示例 -調用原型方法中的嵌套函數

testObj.prototype.funcA = function() { 
    var that = this; 
    that.funcB.subFuncA(); //call nested function within funcB - undefined 
} 

testObj.prototype.funcB = function() { 
    var subfuncA = function() { 
     //call this function from funcA 
    } 
} 

感謝您提供任何幫助。

+1

是啊......不可能。就如此容易。 – deceze 2014-08-28 14:16:25

+1

'subfuncA'是'funcB'本地的,只有當'funcB()'被調用時才存在。 – Bergi 2014-08-28 14:19:36

+0

-1?爲什麼?好吧,由於範圍問題,OP想要什麼是不可能的,但是如果問題只是基於技術層面而降低的話,人們怎麼會學到什麼? – 2014-08-28 14:25:31

回答

1

subfuncA在本地範圍內。它根本沒有暴露在funcB之外。這是(一種方法)你如何在JS中創建私有函數。

如果您想subfuncA爲公開,請將其粘貼到公開的地方。

testObj.prototype.funcA = function() { 
    var that = this; 
    that.funcB.subFuncA(); //call nested function within funcB - undefined 
} 

testObj.prototype.funcB = function() { 
} 

testObj.prototype.funcB.subfuncA = function() { 

}; 
+0

我不認爲你真的想這樣做,[''這個''不再工作](http://stackoverflow.com/a/15884332/1048572) – Bergi 2014-08-28 14:21:36

+1

@Bergi - 沒有足夠的信息關於'subfuncA'應該做些什麼來知道'this'是否會很重要。 – Quentin 2014-08-28 14:22:37

+0

的確如此。由於在原始代碼中它也不是一種方法,這可能是好的,但由於它似乎不是一種實例方法,所以最好將它作爲靜態輔助函數TestObj.funcA來使用。 – Bergi 2014-08-28 14:31:12