>웹 프론트엔드 >JS 튜토리얼 >Object.create: `new`보다 객체를 인스턴스화하는 더 나은 방법은 무엇입니까?

Object.create: `new`보다 객체를 인스턴스화하는 더 나은 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-16 20:02:03964검색

Object.create: A Better Way to Instantiate Objects Than `new`?

Object.create: 객체를 인스턴스화하는 새로운 방법

Javascript 1.9.3 / ECMAScript 5에서는 Douglas Crockford가 적극 옹호한 방법인 Object.create를 도입했습니다. 그리고 다른 사람들. 이 방법은 객체를 인스턴스화할 때 기존 new 키워드에 대한 대안을 제공합니다.

new를 Object.create로 바꾸려면 다음 코드를 살펴보겠습니다.

var UserA = function(nameParam) {
    this.id = MY_GLOBAL.nextId();
    this.name = nameParam;
}
UserA.prototype.sayHello = function() {
    console.log('Hello '+ this.name);
}
var bob = new UserA('bob');
bob.sayHello();

MY_GLOBAL.nextId가 존재한다고 가정합니다. 다음과 같이 Object.create를 사용하여 UserA를 인스턴스화할 수 있습니다.

var userB = {
    sayHello: function() {
        console.log('Hello '+ this.name);
    }
};

var bob = Object.create(userB, {
    'id' : {
        value: MY_GLOBAL.nextId(),
        enumerable: true
    },
    'name': {
        value: 'Bob',
        enumerable: true
    }
});

Object.create의 장점

새 항목에 비해 Object.create의 한 가지 장점은 차등 상속이 가능하다는 것입니다. 객체는 프로토타입 체인 없이도 다른 객체의 속성을 직접 상속받을 수 있습니다. 이는 상속된 속성을 정의할 수 있는 Object.create의 두 번째 인수로 객체를 전달하여 수행됩니다.

또 다른 장점은 유연성입니다. Object.create를 사용하면 속성 설명자 구문을 사용하여 속성 속성(열거 가능, 쓰기 가능, 구성 가능)을 설정할 수 있으므로 개체 속성의 동작을 더 효과적으로 제어할 수 있습니다.

위 내용은 Object.create: `new`보다 객체를 인스턴스화하는 더 나은 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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