객체 지향의 여러 개념에 대해 토론하세요. 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());
생성자에서 this:는 현재 범위 개체의 참조를 나타냅니다. 전역 범위에 있으면 창 개체를 나타냅니다. 현재 생성자가 선언한 객체입니다.
생성자 메서드는 반복되는 인스턴스화 및 개체 식별 문제를 해결합니다. 팩토리 메서드와의 차이점을 비교해 보면 다음과 같습니다.
1. 생성자 메서드는 개체(new Object())를 명시적으로 생성하지 않습니다. 여기에 속성 및 메서드 값을 직접 할당합니다.
4. 하지만 생성자를 사용하여 생성할 때는 new 연산자를 사용해야 합니다.
위 내용은 JavaScript에서 객체를 생성하기 위해 팩토리 패턴과 생성자를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!