在下面的form
对象中,从“检查”功能中,如何调用通知功能的“显示”和“隐藏”方法?
(function (namespace, $, undefined) {
var form = {
check : function(){
form.notification.show(); // Generates an error
},
notification : function(){
this.show = function(){
...
};
this.hide = function(){
...
};
}
};
}(window.namespace = window.namespace || {}, jQuery));
使用form.notification.show()
我收到以下错误:
未捕获的TypeError:无法读取未定义的属性“show”
答案 0 :(得分:1)
尝试在notification
之外定义form
,然后引用它:
var notification : { // no function here
show : function(){...}, // avoid "this"
hide : function(){...}
};
var form = {
check : function(){
notification.show(); // <-- Use here
},
notification : notification // and here
};
(为清楚起见,我省略了jQuery
保护代码。)
下一个问题是,this.show =
将函数分配给执行函数this
时的notification()
。 this
不是notification
!
答案 1 :(得分:0)
你已经附上它,所以你需要退回它并且会为你公开它,如果你在chrome控制台中鞭打以下内容,你会看到你有权访问表单对象
(function (namespace, $, undefined) {
var form = {
check : function(){
form.notification.show(); // Generates an error
},
notification : function(){
this.show = function(){
};
this.hide = function(){
};
}
};
return{form:form};}(window.namespace = window.namespace || {}, jQuery));
我已经完成了对您的代码的所有操作
return{form:form};
表单对象之后。希望这有帮助
修改强>
如果您只想公开表单的某些部分,例如只显示通知,则可以像这样修改返回值:
return{form.notification: notification}