jquery对象文字函数/闭包 - 缺少明显的东西?

时间:2012-02-07 05:38:43

标签: javascript jquery closures

我怎样才能让它发挥作用?似乎是一个微不足道的错误我没有看到

   (function($){
      $.myNamespace = {
        num:0,
        incNum: function(){
                  return num++;},
        decNum: function(){
                  return num--;},
        getNum: function(){
                return num;
                }
      };
    })(jQuery);

调用$ .myNamespace.incNum会产生'ReferenceError:num is not defined'

4 个答案:

答案 0 :(得分:1)

(function ($) {
    $.myNamespace = {
        num: 0,
        incNum: function () {
            return this.num++;
        },
        decNum: function () {
            return this.num--;
        },
        getNum: function () {
            return this.num;
        }
    };
})(jQuery);

答案 1 :(得分:0)

您必须编辑所有返回语句以引用该对象。

 return this.num++;

所以你的代码看起来像这样:

(function ($) {
    $.myNamespace = {
        num: 0,
        incNum: function () {
            return this.num++;
        },
        decNum: function () {
            return this.num--;
        },
        getNum: function () {
            return this.num;
        }
    };
})(jQuery);

答案 2 :(得分:0)

num不是函数范围的一部分; JavaScript没有命名空间的概念。相反,您应该num$.myNamespace.num访问this.num(尽管我不建议 - this可以绑定到任意对象。)

答案 3 :(得分:0)

'num'在你的父类'myNamespace'中...如果你想从这个类的children方法访问它,那么@Kieran说你需要使用this关键字,即this.num ++