Javascript对象创建最佳实践

我有以下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;
  }
...

可能会实现所期望的.

上一篇:c# – 以编程方式创建“SharePoint解决方案”


下一篇:Asp.net新建Sharepoint文件夹方法