オブジェクトを作成する9つの方法のJsの比較

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

@オブジェクトを作成する

##原生制作方法

new func();
{};-->

##工事模型

長所:ネイティブ作成メソッドのカプセル化。

短所:オブジェクトタイプが不明です。

function createFunc(args){… return obj;}
var obj=createFunc(args)-->

##コンストラクタモード

利点:オブジェクトタイプknow(instanceof、obj.constructor)

短所:複数の同一機能を構築する方法。 (this.func = window.funcを渡すことはできますが、関数はグローバルになり、カプセル化は失われます)

function Func(args){this.prop…}
var obj=new Func(args); || Func.call(obj,args); || Func(args) window.prop;…-->

##プロトタイプモード

利点:コンストラクタの欠点を解決しました。

短所:デフォルトのプロパティは同じで、プロトタイプの参照プロパティにピットがあり、1つが変更されます。

function Func(){}    Func.prototype.prop…        //Func.prototype={,…} Object.defineProperty(Func.prototype,constructor,{enumerable:false,value:Func})   重写原型更常用,但需在创建实例前定义原型,否则有坑
var obj=new Func();-->

##构造模型模型組合

利点:建設プロトタイプの2つのプロトタイプを組み合わせる

短所:プロトタイププログラミングジェネリックの特性を強調しません。

インスタンスプロパティは、構造体、メソッド、および共有プロパティのプロトタイプを使用します。

##プロトタイプクローンモード(推奨)

長所:プロトタイププログラミングジェネリックの特性を示します。 「シングルページWebアプリケーション」p38

欠点:

var proto={};function makeFunc(){varobj=Object.create(proto);obj.prop=…; return obj;}
var obj=makeFunc();-->

object.create()をサポートしていないブラウザは jsで実装できます。

##动态プロトタイプ構築

長所:他のOO言語に近い

短所:プロトタイプモードの特性を強調表示しません。

コンストラクタのプロトタイプを動的に初期化します。

function Func(){this.prop=…;if(typeofthis.func!='function'){Func.prototype=function(){}} };
var obj=new Func();-->

プロトタイプメソッドが一度だけ定義され、ifテストが一度だけ必要であることを確認してください。 (プロトタイプの書き換えによって元のインスタンスとの接続が切断される場合、プロトタイプモードは同じピットになります)

##寄生构造

長所:コンストラクタのリファクタリングに使用できます。

短所:オブジェクトタイプが不明です。このメソッドはほとんど使用されません。

function NewFunc(){var obj=new Func();obj.prop=…;return obj;}
var obj=new NewFunc();-->

##安全コンストラクタモード(これを新しいものなしで使用しないでください)

利点:安全な実行環境に特化して、コンストラクタの変数はget関数でのみ取得できます。

短所:オブジェクトタイプが不明

function Func(){var obj=new Object();var_prop;obj.getProp(){};return obj; }
var obj=Func();-->

ファクトリメソッドとの違いは、変数がプライベートであり、クロージャを通じてのみアクセスできることです。 セキュリティは保証されています。


1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ