js でオブジェクトを作成するいくつかの一般的な方法のまとめ (推奨)_js オブジェクト指向
May 16, 2016 pm 06:17 PM
オブジェクトの作成
最初のモード: ファクトリーモード
コードをコピー コードは次のとおりです:
var lev=function(){
return "スクリプト ホーム";
function Parent(){
var Child = new Object(); name="スクリプト";
Child.lev=lev;
var x = 親(); alert(x.name);
alert(x.lev());
手順:
1. 関数内でオブジェクトを定義し、オブジェクトのさまざまなプロパティを定義します。属性はメソッドにすることができます。メソッド
2 を繰り返し作成することを避けるために、属性がメソッドである属性を関数の外部で定義することをお勧めします。 オブジェクトを参照するときは、var の代わりに var x = Parent() を使用します。 x = new Parent(); 後者は多くの問題を引き起こす可能性があるため (前者も古典的なファクトリ メソッドとなり、後者はハイブリッド ファクトリ メソッドと呼ばれます)、このオブジェクトを使用するために新しいメソッドを使用することはお勧めできません。 🎜> 3. 関数内で、最後にオブジェクトが返されます
4. この方法でオブジェクトを作成することはお勧めできませんが、
を理解する必要があります。
コードをコピーします
コードは次のとおりです:
var lev=function(){ return "スクリプト ホーム"; 関数 Parent(){ this.age="30"; ; };
var x =new Parent(); alert(x.lev());
1. ファクトリメソッドと比較して、コンストラクターを使用します。関数的にオブジェクトを作成するには、関数内でオブジェクトを再作成する必要はありませんが、これを使用してオブジェクトを参照し、関数が明示的に返す必要はありません。
2. ファクトリ モードと同様に、属性の値をメソッドにすることはできますが、外部関数でメソッドを定義することをお勧めします。
3. 同様に、この方法でオブジェクトを作成することは推奨されません。
3 番目のモード: プロトタイプ モード
コードをコピー
1. ファクトリメソッドと比較して、コンストラクターを使用します。関数的にオブジェクトを作成するには、関数内でオブジェクトを再作成する必要はありませんが、これを使用してオブジェクトを参照し、関数が明示的に返す必要はありません。
2. ファクトリ モードと同様に、属性の値をメソッドにすることはできますが、外部関数でメソッドを定義することをお勧めします。
3. 同様に、この方法でオブジェクトを作成することは推奨されません。
3 番目のモード: プロトタイプ モード
コードをコピー
コードは次のとおりです。次のように:
var lev=function(){
return "スクリプト ホーム" } ;
function Parent(){
}; 🎜>Parent.prototype.name="ブルース・リー"; Parent.prototype.lev=lev; >alert(x.name); alert(x.lev()); 関数内で属性を定義しないでください2。属性を定義するためのプロトタイプ属性
3. 同様に、この方法でオブジェクトを作成することは推奨されません4 番目のモード: 混合構築関数、プロトタイプ メソッド (推奨)
コードをコピー
コードは次のとおりです:
function Parent (){
this.age=4;
};
Parent.prototype.lev=function(){
return this.name;
};; var x =new Parent();
alert(x.lev());
説明: 1. このパターンは、コンストラクター メソッドとプロトタイプ メソッド の混合と一致を参照します。関数内のメソッドではない (コンストラクターメソッド) 値が関数外のメソッドであるすべての属性をプロトタイプを使用して定義する (プロトタイプメソッド) 3. オブジェクトを作成するには、このメソッドを使用することをお勧めします。スペースの問題のため、ここでは説明しません。5 番目のモード: 動的プロトタイプ メソッド
コードをコピーします
コードは次のとおりです。
function Parent(){
this.name=" Script"; 🎜>this.age=4;
if(typeof Parent._lev=="未定義"){
Parent.prototype.lev=function(){
return this.name ;
} 親._lev=true;
var x =new Parent(); 🎜>
コードをコピー
コードは次のとおりです:
if (typeof Parent._lev=="unknown"){
Parent._lev=true;}
これにより、オブジェクトのインスタンスを作成するときに、属性がメソッドは繰り返されません
3 を作成します。このモードを使用することをお勧めします
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック
Gmailメールのログイン入り口はどこですか?
7290
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29

