[英]Javascript- Callback function issue from namespace?
var myNamespace = {
dateController: {}
};
myNamespace.dateController = function(callback) {
this.callbackfunction = callback;
try {
[this.callbackfunction]();
} catch (e) {
alert(e);
}
};
function displayDate() {
alert("displayDate");
myNamespace.dateController("displayDateFromController");
};
function displayDateFromController() {
alert("In displayDateFromController");
};
這段代碼給了我TypeError: ["displayDateFromController"] is not a function
錯誤。 什么可能是根本原因,也可能是此問題的解決方案。
為什么dateController無法確定displayDateFromController
的功能。
我已經在http://www.w3schools.com/js/tryit.asp?filename=tryjs_events上厭倦了
您需要將實際函數傳遞給datecontroller
方法,而不是String
。
var myNamespace = {
dateController: {}
};
myNamespace.dateController = function (callback)
{
this.callbackfunction = callback;
try{
//remove [] surrounding function
this.callbackfunction();
}
catch(e)
{
alert(e);
}
};
//Declare this method prior to displayDate
function displayDateFromController()
{
alert("In displayDateFromController");
};
function displayDate()
{
alert("displayDate");
//Pass function instead of string
myNamespace.dateController(displayDateFromController);
};
displayDate();
工作示例: http : //jsfiddle.net/RDMHV/
如果仍然需要String的靈活性:
var myNamespace = {
dateController: {}
};
myNamespace.dateController = function (callback)
{
this.callbackfunction = this[callback];
try{
this.callbackfunction();
}
catch(e)
{
alert(e);
}
};
myNamespace.displayDateFromController = function(){
alert("In displayDateFromController");
};
function displayDate()
{
alert("displayDate");
myNamespace.dateController("displayDateFromController");
};
displayDate();
您必須刪除通話周圍的括號:
try{
this.callbackfunction();
}
catch(e)
{
alert(e);
}
並傳遞不帶引號的函數:
function displayDate()
{
alert("displayDate");
myNamespace.dateController(displayDateFromController);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.