有没有办法用点语法实例化这个类?

时间:2013-05-22 18:56:48

标签: javascript

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

这是fiddle

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

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

2 个答案:

答案 0 :(得分: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()并传递原型。

我唯一一次用方法返回一个对象就是当我使用闭包时我需要改变变量......一个完美的例子就像一个计时器。

答案 1 :(得分: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关键字。