0

我有以下 javascript 类/实例化/方法调用:

var myClass = function(a){
    var myElement = a,
        myMethod = function(){
            alert(myElement.html());
        }

    return {
        myMethod: myMethod
    }
}

var myObj = new myClass($('#elementA'));
myObj.myMethod();

我的标记:

<div id="elementA">This is the text in elementA</div>

这是小提琴

有没有办法用点语法实例化这个类?理想情况下,它看起来像:myObj.myClass()? 与 jquery 实例化新小部件的方式相同($().tabs();想到)。我需要重组我的对象吗?如果是这样,怎么做?

如果您可以推断我误解了其中任何部分的工作原理,请随时纠正我。谢谢您的帮助!

4

2 回答 2

1

这就是我要做这样的事情的方式:

var myObj = {

    myMethod: function(elem) {

        alert($(elem).html()); //do your alert
        return this; //return the object for chanining

    },

    myOtherMethod: function() {

        alert("This is something other method");
        return this;    

    }

}

myObj.myMethod("#elementA").myOtherMethod();

这是小提琴:http: //jsfiddle.net/LqvXg/

只需使用var您想要的任何名称创建一个新对象。

如果您要使用new,您可能应该将它与构造函数一起使用。您还可以使用Object.create()并传递原型。

我返回一个带有方法的对象的唯一时间是当我使用闭包并且我有需要更改的变量时......一个完美的例子就是计时器之类的东西。

于 2013-05-22T19:10:27.953 回答
0

新小提琴:http: //jsfiddle.net/WybQb/2/

将所有内容链接起来有什么问题?虽然,如果你打算做这样的事情......我会因为提出这个建议而被击落,但这种语法对你来说可能很棒:

var myClass = function(a){
    var myElement = a,
       myMethod = function(){
        alert(a.html());
       }

    return {
       myMethod: function() { return new myMethod(); }
   }
}

这样做的唯一好处是避免使用new关键字。

于 2013-05-22T19:00:55.970 回答