// 以下は OOP で使用されるメソッドです
// これはとても便利です 卑劣です...JS は OOP 言語ではないので...
// しかし、偉大なファンが私たちにこれを行うよう導いてくれます
// これらのメソッドを使用する人々をベルダンディが祝福しますOOP へ...
Function.prototype .inherits = function(base){
//導出関係、プロトタイプは保持される
//単一の導出のみがサポートされます
this.prototype = new Base( );
return this;
}
Function.prototype.create = function(){
//クラスの作成者は new
を使用するのと同じです//JS はサポートしませんコンストラクターで call と apply を使用するので...
/ /Belldandy、この問題の解決方法を教えてくれてありがとう...
var _args = []
for(i=0) ;i
return eval('new this(' _args.join(',') ')'); //eval を使用します...ベルさん、次回はもっと親切にしてください 私のアイデア...
}
Function.prototype.pin = function(pinner,args){
// サービスを登録する、または " pin" service
// EventManager はこれを実行できます
// デフォルトの実装でインターフェイスを実装すると考えることもできます...
// たとえば、pin EventManager は次のようになりますthis: Class.pin(core.WvwntManager)
args = args || [ ];
return this; prototype.method = function(name, f) { //メソッドの追加、効率的
if (!(f instanceof Function)) throw new Error('無効なメソッド バインディング、タイプ ' typeof f ' を取得しました; 期待される関数');
this.prototype[name] = f;
return this
}
Function.prototype.property = function(name, localName, getter, setter) { //プロパティを追加し、ゲッターをカスタマイズできますおよびセッター
if (!name || !nameinstanceof String) throw newEnvironmentException('属性を定義するとき、属性名が定義されていないか、文字列ではありません');
if (!localName || ! localName インスタンスオブ String) localName = '_local_' 名前;
if(関数のゲッターインスタンス) {
this.prototype['_belldandy_get_' 名前] = ゲッター;
}
if(関数のセッターインスタンス){
this.prototype['_belldandy_set_' name] = setter;
}
this.prototype[name] = new Function("value , Force","
if (!value && !force) {
if (!this['" '_belldandy_get_' name "'] || !this['" '_belldandy_get_' name "']instanceof Function)
return this['" localName "'] /* getter が設定されていない場合*/
else
return this['" '_belldandy_get_ ' name "'].call(this);
} else {
if (!this['" '_belldandy_set_ ' name "'] || !this['" '_belldandy_set_' name "'] 関数のインスタンス)
this['" localName "'] = value;
else
this['" '_belldandy_set_' name "'].call(this, value);
return this
} ") //ベルダンディ、許してください、これはクロージャを生成しません
return this
}
Function.prototype.static = function(name,value){ //属性を含む静的機能とメソッド
this[name] = value;
}
には次の効果があります:
コードをコピー
.property('a', '_a')
.property('b', '_b', function() { これを返します。 _b '.' })
.method('f', function() { dwn(this.a ()) });
function bar(x,y){this.x = x;this. y = y;};
with(bar){
inherits(foo)
メソッド ('g',function(){dwn(this.a() '-' this.b())
}
var f = new foo();
f.b(2); (f.b());
b = bar.create(1,2);
b.b(5); x',' b.y) >