이 기사의 주요 내용은 JavaScript 고급 프로그래밍, 객체 지향 및 프로토타입 장에서 나온 것입니다.
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())를 명시적으로 생성하지 않습니다.
2. 여기에 속성과 메소드 값을 직접 할당합니다.
3. 반품문의 없음
4. 단, 생성자를 사용하여 생성할 때는 new 연산자를 사용해야 합니다.
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.