ホームページ  >  記事  >  ウェブフロントエンド  >  JSデザインパターンのコンストラクタパターンの詳細説明

JSデザインパターンのコンストラクタパターンの詳細説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-17 09:20:432056ブラウズ

今回は、JS のコンストラクター パターン デザイン パターン について詳しく説明します。 JS デザイン パターンのコンストラクター パターンを使用する際の 注意事項 は何ですか? 以下は実際のケースです。

古典的な OOP 言語では、コンストラクター (

コンストラクター とも呼ばれます) は、オブジェクトを初期化するために使用される特別なメソッドです。 JS ではすべてがオブジェクトであるため、オブジェクト コンストラクターについてよく言及されます。

オブジェクト コンストラクターは、指定された型 (クラス) のオブジェクトを作成するために使用され、パラメーターを受け入れてオブジェクトの

プロパティとメソッドを初期化できます。

オブジェクトの作成

JS では、オブジェクトの作成によく使用される 3 つのメソッドがあります:

//1, 推荐使用
var newObject = {};
//2,
var newObject = Object.create( null );
//3, 不推荐
var newObject = new Object();
ただし、これにより作成されるのは、プロパティやメソッドのない 3 つの空のオブジェクトだけです。次の 4 つの方法でオブジェクトのプロパティとメソッドを設定できます。

りー

基本コンストラクター

JS にはクラスの概念がないことはわかっていますが、コンストラクターを使用してオブジェクトを作成することもサポートされています。

[new] キーワードを使用すると、関数をコンストラクターのように動作させ、独自のオブジェクト インスタンスを作成できます。

基本的なコンストラクターの形式は次のとおりです:

// ECMAScript 3 兼容的方式
// 1. 常规对象定义方式
//设置属性
newObject.someKey = "Hello World";
//获取属性
var key = newObject.someKey;
// 2. 方括号方式
// 设置属性
newObject["someKey"] = "Hello World";
//获取属性
var key = newObject["someKey"];
// 仅仅用于ECMAScript 5
// 3. Object.defineProperty
// 设置属性
Object.defineProperty(
 newObject, "someKey",
 { value: "for more control of the property's behavior",
  writable: true,
  enumerable: true,
  configurable: true
});
//可以通过下面的函数简化属性设置
var defineProp = function ( obj, key, value ){
  config.value = value;
  Object.defineProperty( obj, key, config );
};
// 使用方法
var person = Object.create( null );defineProp( person, "car", "Delorean" );
defineProp( person, "dateOfBirth", "1981" );
defineProp( person, "hasBeard", false );
// 4. Object.defineProperties
//设置属性
Object.defineProperties(
newObject,
{ "someKey": { value: "Hello World", writable: true },
 "anotherKey": { value: "Foo bar", writable: false }
});
// 3和4的获取属性方法同1,2.
これは単純なコンストラクター パターンです。

という 2 つの主な問題があります。 第一に、継承が困難であること、第二に、toString() はオブジェクト インスタンスごとに 1 回定義されるため、Car 型のすべてのインスタンスで共有される必要があります。

プロトタイプコンストラクターを使用する

JS には非常に優れた機能があります: プロトタイプ [プロトタイプ]、

これを使用すると、オブジェクトの作成時に、コンストラクター プロトタイプ内のすべてのプロパティをオブジェクト インスタンスによって取得できます。

これにより、複数のオブジェクト インスタンスが同じプロトタイプを共有できるようになります。

前の Car の例を次のように改良します:

function Car( model, year, miles ) {
  //这里,this指向新建立的对象自己
  this.model = model;
  this.year = year;
  this.miles = miles;
  this.toString = function () {
    return this.model + " has done " + this.miles + " miles";
  };
}
//用法
// 建立两个car实例
var civic = new Car( "Honda Civic", 2009, 20000 );
var mondeo = new Car( "Ford Mondeo", 2010, 5000 );
// 输出结果
console.log( civic.toString() );
console.log( mondeo.toString() );
上記の例では、toString() メソッドは複数の Car オブジェクト インスタンスによって共有されます。 .

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

AngularJSを使用してセカンダリリンケージの選択ドロップダウンメニューを実装する手順の詳細な説明

ユーザー情報の追加と削除のBootstrapとVue操作

以上がJSデザインパターンのコンストラクタパターンの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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