Function_javascript スキルの OOP 拡張機能

WBOY
リリース: 2016-05-16 18:53:19
オリジナル
1015 人が閲覧しました
コードをコピーします コードは次のとおりです:

// 以下は 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;
}



には次の効果があります:


コードをコピー
コードは次のとおりです:function foo() { }; foo
.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) >
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート