ホームページ ウェブフロントエンド jsチュートリアル Function_javascript スキルの OOP 拡張機能

Function_javascript スキルの OOP 拡張機能

May 16, 2016 pm 06:53 PM
function oop

コードをコピーします コードは次のとおりです:

// 以下は 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) >
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

機能とはどういう意味ですか? 機能とはどういう意味ですか? Aug 04, 2023 am 10:33 AM

機能とはどういう意味ですか?

Python の「enumerate()」関数の目的は何ですか? Python の「enumerate()」関数の目的は何ですか? Sep 01, 2023 am 11:29 AM

Python の「enumerate()」関数の目的は何ですか?

オブジェクト指向プログラミングにおける Golang 関数の応用 オブジェクト指向プログラミングにおける Golang 関数の応用 May 31, 2024 pm 07:36 PM

オブジェクト指向プログラミングにおける Golang 関数の応用

MySQL.procテーブルの役割と機能の詳しい説明 MySQL.procテーブルの役割と機能の詳しい説明 Mar 16, 2024 am 09:03 AM

MySQL.procテーブルの役割と機能の詳しい説明

「PHP によるオブジェクト指向プログラミング入門: 概念から実践まで」 「PHP によるオブジェクト指向プログラミング入門: 概念から実践まで」 Feb 25, 2024 pm 09:04 PM

「PHP によるオブジェクト指向プログラミング入門: 概念から実践まで」

PHP OOP での関数の使用: Q&A PHP OOP での関数の使用: Q&A Apr 10, 2024 pm 09:27 PM

PHP OOP での関数の使用: Q&A

Vue.use関数の使い方と機能 Vue.use関数の使い方と機能 Jul 24, 2023 pm 06:09 PM

Vue.use関数の使い方と機能

js関数の使い方は何ですか js関数の使い方は何ですか Oct 07, 2023 am 11:25 AM

js関数の使い方は何ですか

See all articles