이번에는 JS 디자인 패턴 에 대한 자세한 설명을 가져왔습니다. JS 디자인 패턴의 생성자 패턴을 사용할 때 주의 사항 은 무엇입니까?
고전적인 OOP 언어에서 생성자(constructor라고도 함)는 객체를 초기화하는 데 사용되는 특별한 방법입니다. JS에서는 모든 것이 객체이기 때문에 객체 생성자가 자주 언급됩니다.
개체 생성자는 지정된 유형(클래스)의 개체를 만드는 데 사용되며 개체의 속성 및 메서드를 초기화하는 매개 변수를 허용할 수 있습니다.
객체 생성
JS에는 객체 생성에 일반적으로 사용되는 세 가지 방법이 있습니다:
//1, 推荐使用 var newObject = {}; //2, var newObject = Object.create( null ); //3, 不推荐 var newObject = new Object();
그러나 이는 속성과 메서드 없이 세 개의 빈 개체만 생성합니다. 다음 네 가지 방법을 통해 객체의 속성과 메서드를 설정할 수 있습니다.
rreee기본 생성자
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.
이것은 간단한 생성자 패턴입니다. 여기에는 두 가지 주요 문제가 있습니다.
첫째, 상속하기가 어렵습니다. 둘째, toString()은 각 객체 인스턴스에 대해 한 번 정의되며 Car 유형의 모든 인스턴스에서 공유되어야 합니다.
프로토타입 생성자 사용
JS에는 아주 좋은 기능이 있습니다: 프로토타입 [Prototype],
이를 사용하면 객체를 생성할 때 생성자 프로토타입의 모든 속성을 객체 인스턴스에서 얻을 수 있습니다.
이를 통해 여러 객체 인스턴스가 동일한 프로토타입을 공유할 수 있습니다.
이전 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 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 자료:
Bootstrap 및 Vue 작업을 사용하여 사용자 정보를 추가 및 삭제하는 보조 연결 드롭다운 메뉴 선택을 구현하는 단계에 대한 자세한 설명
위 내용은 JS 디자인 패턴의 생성자 패턴에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!