먼저 Object 인스턴스를 생성한 다음 여기에 속성과 메소드를 추가하세요.
var Person = new Object() Person.name = 'hl' Person.sayName = function () { console.log(this.name) }
객체 리터럴 메소드는 객체를 생성하는 가장 빠르고 편리한 방법이며 많은 곳에서 사용됩니다. 시나리오.
var Person = { name: 'hl', sayName: function () { console.log(this.name) } }
객체 리터럴 방식의 단점은 동일한 유형의 객체를 여러 개 생성할 때 중복 코드가 많이 생성되므로 팩토리 패턴이 발생한다는 것입니다.
팩토리 패턴은 함수를 사용하여 객체 생성의 세부 사항을 캡슐화합니다. 함수를 호출할 때 객체 속성을 전달한 다음 객체를 반환합니다.
function createPerson (name) { return { name: name, sayName: function () { console.log(this.name) } } } var person = createPerson('hl') var person = new createPerson('hl') // 寄生构造函数模式
new 연산자를 사용해도 동일한 결과를 얻을 수 있습니다. 이 메서드를 기생 생성자 패턴이라고 하며 함수를 직접 호출하는 것과 다르지 않습니다.
팩토리 패턴은 동일한 유형의 여러 객체를 생성하는 문제를 해결하지만 객체의 특정 유형을 식별할 수는 없습니다.
생성자를 통해 생성된 객체의 경우, instanceof 연산자를 사용하여 객체의 유형을 결정할 수 있습니다. 프로그래밍 관례에 따라 생성자 이름은 일반 함수와 구별하기 위해 대문자로 표시되어야 합니다.
Rfunction Person (name) { this.name = name this.sayName = function () { console.log(this.name) } } p = new Person('hl') p instanceof Person // true
함수의 단점은 각 메서드가 인스턴스마다 다시 생성되어 메모리 낭비가 발생한다는 것입니다.
5 프로토타입 패턴
function Person () { } var p = new Person() Person.prototype.name = 'hl' Person.prototype.sayName = function () { console.log(this.name) } p.sayName() // hl
프로토타입은 동적입니다. 즉, 객체가 먼저 생성된 다음 프로토타입이 수정되고 인스턴스도 해당 속성과 메서드를 얻을 수 있습니다.
프로토타입 패턴에는 단점이 있습니다. 첫째, 프로토타입 패턴은 초기화 매개변수를 전달할 수 없으므로 각 인스턴스가 동일한 속성을 얻습니다. 둘째, 참조 유형 값의 경우 아래 예를 참조하세요.function Person () { } Person.prototype.relative = ['father','mother'] var person1 = new Person() var person2 = new Person() person1.relative.push('sister') console.log(person2.relative) // [ 'father', 'mother', 'sister' ]
function Person (name) { this.name = name } Person.prototype.sayName = function () { console.log(this.name) }
function Person(name) { this.name = name if (typeof this.sayName !== 'function') { Person.prototype.setName= function (name) { this.name = name } Person.prototype.sayName = function () { console.log(this.name) } } }
function Person (name) { return { sayName: function () { console.log(name) } } } var person = Person('hl')
위 내용은 객체를 생성하는 모드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!