我正在尝试为Web应用程序编写一些javascript函数。
遵循此处的建议:How do I declare a namespace in JavaScript?
我试图通过将所有内容包装在命名函数中来使代码不引人注目,但是当我在子匿名函数内部访问父函数时遇到困难。
例如:
var title_picker = new function(){
// This property should be public
this.callback=function(){};
var ok=function(){
var title = $('input#title').val();
callback(title) // <---
}
...
当在“ok”函数内部时,引用“callback”属性的最佳方法是什么?
答案 0 :(得分:4)
编写代码后,没有。
您可以从父级范围访问变量,除非它们在较窄的范围内被覆盖。
this
总是被覆盖。
您可以将this
复制到另一个仍在范围内的变量:
var title_picker = new function(){
var self = this; // Copy this to a variable that stays in scope
// This property should be public
this.callback = function(){};
var ok=function(){
var title = $('input#title').val();
self.callback(title) // self is still in scope
}
...
答案 1 :(得分:2)
也许是这样的:
var title_picker = new function(){
// This property should be public
this.callback=function(){};
var that = this;
var ok=function(){
var title = $('input#title').val();
that.callback(title) // <---
}
...
虽然有很多框架可以为你做这种事(yui,dojo,prototype ......)