【发布时间】:2011-05-17 12:15:21
【问题描述】:
我有以下 javascript:
var MyObject = (function() {
function Setup(args) {
this.prop1 = args.x;
this.prop2 = args.y
this.prop3 = this.prop1 + this.prop2;
this.Create = function() {
return 'a' + helperFunc();
}
function helperFunc() {
return this.prop3;
}
}
return {
init : function(args) {
var setup = new Setup(args);
setup.Create();
}
}
})();
$(function() {
MyObject.init(someArgs);
});
我的对象构造方法是一种好的做法吗?
我在尝试访问
this.prop3时在 helperFunc 中收到undefined。-
我还尝试将
this.prop1 + this.prop2分配给一个局部变量,并使用一个函数来返回这个值,如下所示:function Setup(args) { var total; this.prop1 = args.x; this.prop2 = args.y total = this.prop1 + this.prop2; this.getTotal = function() { return total; }; this.prop3 = this.prop1 + this.prop2; ...
...当像这样在 helperFunc 中调用它时:
return this.getTotal();
.. 我得到 this.getTotal 不是函数
我一直在阅读有关对象创建和使用闭包来模拟私有成员等方面的知识,但由于没有一种方法可以定义对象,我感到困惑。
TBH - 我不太了解结构:
var myObject = (function() { ... } ();
我已经看到它在 jQuery 插件中使用了很多,但是第一个括号后面是空括号是什么意思?
任何传授的知识将不胜感激。
另外,我已经订购了 Douglas Crockford 关于 javascript 的书,在它到达之前我需要尝试解决这个问题
【问题讨论】:
-
这里有很多问题。如果您尝试将自己限制在每个问题一个问题上,那么提供准确而准确的答案会容易得多。
-
mplungjan - 这是理解函数调用末尾的括号的完美链接。我只需要了解为什么我在调用属性而不是调用函数时得到未定义...
标签: javascript object closures creation