Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用CoffeeScript类扩展jQuery_Jquery_Coffeescript - Fatal编程技术网

用CoffeeScript类扩展jQuery

用CoffeeScript类扩展jQuery,jquery,coffeescript,Jquery,Coffeescript,我是CoffeeScript新手,我喜欢CoffeeScript类,但不知道如何使用jQuery.prototype在jQuery中扩展它们 这是我的应用程序中保存某种全局状态变量的部分,因此我想通过$.myFunction()调用它,而不是通常的$.fn.extend/$().myThing()扩展方式 我可以让它像这样工作: $ = jQuery $.myThing = $.myThing || {} $.extend $.myThing, { myProperty: 0 myFu

我是CoffeeScript新手,我喜欢CoffeeScript类,但不知道如何使用jQuery.prototype在jQuery中扩展它们

这是我的应用程序中保存某种全局状态变量的部分,因此我想通过$.myFunction()调用它,而不是通常的$.fn.extend/$().myThing()扩展方式

我可以让它像这样工作:

$ = 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()”。