>웹 프론트엔드 >JS 튜토리얼 >JS 디자인 패턴의 생성자 패턴에 대한 자세한 설명

JS 디자인 패턴의 생성자 패턴에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-04-17 09:20:432086검색

이번에는 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 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

AngularJS

Bootstrap 및 Vue 작업을 사용하여 사용자 정보를 추가 및 삭제하는 보조 연결 드롭다운 메뉴 선택을 구현하는 단계에 대한 자세한 설명

위 내용은 JS 디자인 패턴의 생성자 패턴에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.