2010-11-26 11 views
1

zepto.jsには、クラスを追加してサブクラスを拡張する方法がありますか?Coffeescript、Classes&Zepto.js

接続されている質問は次のとおりです。Coffeescriptは実際に、クラスを作成し、プロトタイプのような特別な方法を持つライブラリを必要とせずに拡張できるのですか?

答えて

3

Zepto.jsソースの脱脂は、それが動作するかもしれ$.extend方法を持って示しているが、それは伝統的な継承モデルよりも二つのオブジェクトの実装のマージのより多くのです(スーパーアクセサのようなものを提供することになる。)

CoffeeScriptは、あなたが模索するかもしれない典型的な継承モデルを提供するために必要なコードを生成します。

中:

class Person 
    constructor: (@name) -> 

class Ninja extends Person` 

アウト:

var Ninja, Person; 
var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { 
    for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } 
    function ctor() { this.constructor = child; } 
    ctor.prototype = parent.prototype; 
    child.prototype = new ctor; 
    child.__super__ = parent.prototype; 
    return child; 
}; 
Person = function() { 
    function Person(name) { 
    this.name = name; 
    } 
    return Person; 
}(); 
Ninja = function() { 
    function Ninja() { 
    Ninja.__super__.constructor.apply(this, arguments); 
    } 
    __extends(Ninja, Person); 
    return Ninja; 
}();