먼저 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) } } }if로 모든 속성이나 메서드를 확인하는 대신 프로토타입이 초기화된 후에 존재해야 하는 속성이나 메서드 중 하나만 확인하세요. 🎜🎜8 안전한 생성자 패턴🎜🎜안전한 객체는 공용 속성이 없고 해당 속성과 메서드가 이 객체를 참조하지 않으며 객체를 생성하는 데 new 연산자가 사용되지 않음을 의미합니다. 데이터 수정을 방지하기 위해 보안이 필요한 일부 환경에서 사용하기에 적합합니다. 🎜
function Person (name) { return { sayName: function () { console.log(name) } } } var person = Person('hl')🎜안전 모드에서 생성된 개체는 생성자에 정의된 메서드를 사용하는 것 외에는 생성자에 전달된 원본 데이터를 수정하고 액세스할 수 있는 방법이 없습니다. 🎜
위 내용은 객체를 생성하는 모드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!