如何在javascript中访问父函数的公共属性?

时间:2011-11-07 17:04:12

标签: javascript jquery namespaces

我正在尝试为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”属性的最佳方法是什么?

2 个答案:

答案 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 ......)