ファクトリ パターンとコンストラクターを使用して JavaScript でオブジェクトを作成するにはどうすればよいですか?

伊谢尔伦
リリース: 2017-07-27 17:18:08
オリジナル
2398 人が閲覧しました

オブジェクト指向のいくつかの概念について説明します: 1. すべてはオブジェクトです、2. オブジェクトにはカプセル化と継承の特性があります、3. オブジェクトはメッセージを使用して相互に通信し、それぞれに情報の隠蔽があります。

1. ファクトリ パターン

ECMAScript はファクトリ パターンを通じてオブジェクトを作成できます:


//工厂模式
function createObject(name, age) {
  var obj = new Object();                  //创建对象
  obj.name = name;                      //添加属性
  obj.age = age;
  obj.run = function () {                    //添加方法
    return this.name + this.age + '运行中...';
  };
  return obj;                            //返回对象引用
};
var obj1 = createObject('Lee', 100);          //创建第一个对象
var obj2 = createObject('Jack', 200);          //创建第二个对象
//alert(obj1.run());                          //打印第一个对象实例的run()方法
//alert(obj2.run());                          //打印第二个对象实例的run()方法

//alert(typeof obj1);
//alert(typeof obj2);
alert(obj1 instanceof Object); //true
alert(obj2 instanceof Object); //true
ログイン後にコピー

ファクトリ パターンを通じて作成されたオブジェクトは、インスタンス化の繰り返しの問題を解決しますが、オブジェクト認識の問題は解決できません (すべてのオブジェクトはオブジェクトです)したがって、オブジェクト認識の問題を解決するには、次のコンストラクターを使用します。

2. コンストラクター


//构造函数创建
function Person(name,age){  //所有构造函数对象都是Object
  this.name=name;
  this.age=age;
  this.run=function(){
    return this.name+this.age+"ing...";
  };
};
var person1=new Person('zhu1',100);
var person2=new Person('zhu2',200);
alert(person1.run());
alert(person2.run());

alert(person1 instanceof Object); //ture
alert(typeof person2);         //Person
alert(person2 instanceof Person);  // true
var person3=new Object();
Person.call(person3,'zhu3',300);//对象冒充,person3是Object类型,冒充Person类型
alert(person3.run());
ログイン後にコピー

コンストラクターでは、これは現在のスコープ オブジェクトの参照を表し、コンストラクター本体にある場合はウィンドウ オブジェクトを表します。現在のコンストラクターによって宣言されたオブジェクト。

コンストラクター メソッドは、インスタンス化とオブジェクトの識別の繰り返しの問題を解決します。

1. コンストラクター メソッドはオブジェクト (new Object()) を明示的に作成しません。これに属性とメソッドの値を直接割り当てます。

4. ただし、コンストラクターを使用して作成する場合は、 new 演算子を使用する必要があります。

以上がファクトリ パターンとコンストラクターを使用して JavaScript でオブジェクトを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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