我有以下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中得到了未定义.
>我还尝试将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();
..我得到这个.getTotal不是一个函数
我一直在阅读对象创建和使用闭包来模仿私人成员等等,因为没有一种方法来定义对象我感到困惑.
TBH – 我真的不明白这个结构:
var myObject = (function() { ... } ();
我已经看到它在jQuery插件中使用了很多但是第一个parenth在结尾处跟着空的parenth是什么意思呢?
任何知识都会受到高度赞赏.
另外,我已经订购了关于javascript的道格拉斯克罗克福德书,直到它到来我需要尝试解决这个问题
解决方法:
引用他提到的Xhalent’s wonderful article(真的做得很好,显然很简单):
That is because the value of “this” is
different to the value of “this” when
the object was created.
所以在你的情况下:
...
var _this = this.prop3;
function helperFunc() {
return _this;
}
...
可能会实现所期望的.