用CoffeeScript类扩展jQuery
我是CoffeeScript新手,我喜欢CoffeeScript类,但不知道如何使用jQuery.prototype在jQuery中扩展它们 这是我的应用程序中保存某种全局状态变量的部分,因此我想通过$.myFunction()调用它,而不是通常的$.fn.extend/$().myThing()扩展方式 我可以让它像这样工作:用CoffeeScript类扩展jQuery,jquery,coffeescript,Jquery,Coffeescript,我是CoffeeScript新手,我喜欢CoffeeScript类,但不知道如何使用jQuery.prototype在jQuery中扩展它们 这是我的应用程序中保存某种全局状态变量的部分,因此我想通过$.myFunction()调用它,而不是通常的$.fn.extend/$().myThing()扩展方式 我可以让它像这样工作: $ = jQuery $.myThing = $.myThing || {} $.extend $.myThing, { myProperty: 0 myFu
$ = jQuery
$.myThing = $.myThing || {}
$.extend $.myThing, {
myProperty: 0
myFunction: ->
}
$ = jQuery
$.myThing = $.myThing || {}
class myThing
myProperty: 0
myFunction: ->
$.extend $.myThing, myThing()
这没关系,但是我不能把它作为一个类使用,而且它的结构看起来也不像我的pycharm。(老实说,这可能比整个班级的事情更麻烦…)
我想做的是这样的事情:
$ = jQuery
$.myThing = $.myThing || {}
$.extend $.myThing, {
myProperty: 0
myFunction: ->
}
$ = jQuery
$.myThing = $.myThing || {}
class myThing
myProperty: 0
myFunction: ->
$.extend $.myThing, myThing()
但它不起作用(除了穿着pycharm看起来很漂亮)。有更好的方法吗?这对你有用吗
class jQuery.myThing
myProperty: 0
myFunction: ->
汇编至:
jQuery.myThing = (function() {
function myThing() {}
myThing.prototype.myProperty = 0;
myThing.prototype.myFunction = function() {};
return myThing;
})();
编辑:$。将
虚构为类的实例:
class myThing
myProperty: 0
myFunction: ->
jQuery.myThing = new myThing
我希望我的jquery方法像一个常规的jquery扩展一样——是一个jquery对象,包含所有的jquery方法,如each、html等等——但也要具有类的属性。以下是我的解决方案:
Object.prototype.extend = (klass)->
for key, value of klass::
@[key] = value
class MyClass
myclassmethod: ->
$.fn.myjqextension = ()->
@extend MyClass
@myclassmethod()
见:
Closer—我还没有看这些类是如何编译的。在本例中,$.myThing返回原型,而不是对象的单个实例,因此我猜我需要在其中的某个位置添加“new”。我没有意识到您希望
$。myThing
成为该类的实例。见上面的编辑。我不认为我曾经完全理解原型。。。谢谢这很好用,甚至看起来很迷人。似乎我也可以做“$.extend$.myThing,newmything()”。