JavaScript를 사용하여 객체를 생성하는 7가지 방법의 예
이 글에서는 주로 JavaScript에서 객체를 생성하는 7가지 방법을 소개합니다. 구체적인 작업 단계는 아래에서 자세한 설명을 확인하실 수 있습니다. 그것에.
JavaScript에서 객체를 생성하는 방법은 여러 가지가 있습니다. 객체 생성자나 객체 리터럴을 통해 단일 객체를 생성할 수도 있습니다. 분명히 이 두 가지 방법은 반복되는 코드를 많이 생성하므로 대량 생산에는 적합하지 않습니다. 다음으로, 객체를 생성하는 7가지 매우 고전적인 방법을 소개하겠습니다. 각 방법에는 고유한 장점과 단점이 있습니다.
팩토리 패턴
function createPerson(name, job) { var o = new Object() o.name = name o.job = job o.sayName = function() { console.log(this.name) } return o } var person1 = createPerson(‘Jiang', ‘student') var person2 = createPerson(‘X', ‘Doctor')
이 팩토리 함수는 셀 수 없이 호출될 수 있습니다. 두 개의 속성을 포함하는 속성과 메소드가 있는 객체를 반환합니다
팩토리 패턴은 유사한 객체를 여러 개 생성하는 문제를 해결하지만 객체 식별 문제, 즉 객체의 유형을 알 수 없는 문제는 해결하지 않습니다
생성자 패턴
function Person(name, job) { this.name = name this.job = job this.sayName = function() { console.log(this.name) } } var person1 = new Person(‘Jiang', ‘student') var person2 = new Person(‘X', ‘Doctor')
No 객체를 명시적으로 생성하려면 new를 사용하여 이 생성자를 호출하면 다음 작업이 자동으로 수행됩니다.
새 객체 생성
이 새로운 객체가 실행됩니다. [[프로토타입]] link
이 새 객체는 함수 호출에 바인딩됩니다. This
returns this object
이 메소드를 사용하여 객체를 생성하면 객체 유형을 감지할 수 있습니다
person1 instanceof Object // true
person1 instanceof Person //true
그러나 객체를 생성하기 위해 생성자를 사용하면 각 인스턴스에서 각 메소드를 다시 생성해야 합니다. 한 번 생성
프로토타입 패턴
function Person() { } Person.prototype.name = ‘Jiang' Person.prototype.job = ‘student' Person.prototype.sayName = function() { console.log(this.name) } var person1 = new Person()
프로토타입 객체에 직접 정보를 추가하세요. 프로토타입을 사용하면 생성자에서 객체 인스턴스 정보를 정의하지 않고도 모든 인스턴스 객체가 포함된 속성과 메서드를 공유할 수 있다는 장점이 있습니다.
프로토타입은 매우 중요한 개념으로, 프로토타입과 프로토타입의 관계와 차이점을 이해하는 글에 자세히 설명되어 있습니다.
간단한 작성 방법
function Person() { } Person.prototype = { name: ‘jiang', job: ‘student', sayName: function() { console.log(this.name) } } var person1 = new Person()
Person.prototype을 객체와 동일하게 설정 리터럴 형식으로 생성되지만 이로 인해 .constructor가 더 이상 Person을 가리키지 않게 됩니다.
이 방법을 사용하면 기본 Person.prototype 객체가 완전히 다시 작성되므로 여기에는 .constructor가 존재하지 않습니다
Person.prototype.constructor === Person // false
이 속성이 필요한 경우 수동으로 추가할 수 있습니다
function Person() { } Person.prototype = { constructor:Person name: ‘jiang', job: ‘student', sayName: function() { console.log(this.name) } }
하지만 이 방법은 여전히 충분하지 않습니다. 생성자 속성은 기본적으로 열거 가능하지 않습니다. 직접 설정하면 열거 가능해집니다. 따라서 가능하다면 Object.defineProperty 메소드
Object.defineProperty(Person.prototype, ‘constructor', { enumerable: false, value: Person })
Disadvantages
프로토타입을 사용하면 모든 속성이 공유되는데 이는 큰 장점이지만 몇 가지 단점도 가져올 것입니다
All in the 프로토타입 속성 인스턴스는 여러 인스턴스에 의해 공유되므로 기능에 매우 적합합니다. 기본 값을 포함하는 속성은 거의 불가능합니다. 인스턴스 속성은 프로토타입 속성을 보호할 수 있습니다. 하지만 참조 유형 값을 사용하면 문제가 발생합니다
function Person() { } Person.prototype = { name: ‘jiang', friends: [‘Shelby', ‘Court'] } var person1 = new Person() var person2 = new Person() person1.friends.push(‘Van') console.log(person1.friends) //[“Shelby”, “Court”, “Van”] console.log(person2.friends) //[“Shelby”, “Court”, “Van”] console.log(person1.friends === person2.friends) // true
인스턴스 person1과 person2가 동일한 프로토타입을 가리키면 person1이 생성자를 사용한 조합에도 반영됩니다. 패턴 및 프로토타입 패턴
이는 사용자 정의 유형을 생성하는 데 가장 널리 사용되고 가장 잘 알려진 방법입니다. 위 패턴의 단점을 해결할 수 있습니다이 패턴을 사용하면 각 인스턴스가 인스턴스 속성의 자체 복사본을 가질 수 있지만 동시에 메서드에 대한 참조를 공유할 수 있습니다
이 경우 인스턴스 속성이 수정되더라도 참조 유형의 값은 다른 인스턴스의 속성 값에 영향을 미치지 않습니다.
function Person(name) { this.name = name this.friends = [‘Shelby', ‘Court'] } Person.prototype.sayName = function() { console.log(this.name) } var person1 = new Person() var person2 = new Person() person1.friends.push(‘Van') console.log(person1.friends) //[“Shelby”, “Court”, “Van”] console.log(person2.friends) // [“Shelby”, “Court”] console.log(person1.friends === person2.friends) //false
동적 프로토타입 모드
동적 프로토타입 모드는 초기화 중에 생성자의 모든 정보를 캡슐화합니다. 프로토타입 초기화 여부를 결정할 때 특정 메소드가 유효한지 감지
function Person(name, job) { // 属性 this.name = name this.job = job
// 方法 if(typeof this.sayName !== ‘function') { Person.prototype.sayName = function() { console.log(this.name) } } } var person1 = new Person(‘Jiang', ‘Student') person1.sayName()
이후 프로토타입은 초기화되었으므로 수정할 필요가 없습니다
여기에서 프로토타입에 대한 수정 사항은 모든 인스턴스에 즉시 반영될 수 있습니다.
둘째, if 문은 이후에 존재해야 하는 모든 속성을 확인할 수 있습니다. 따라서 모든 속성과 메서드를 확인하기 위해 여러 if 문을 사용하는 대신 하나만 확인하세요.
Parasite Constructor Pattern
이 패턴의 기본 아이디어는 기능이 다음과 같은 함수를 만드는 것입니다. 단지 객체를 생성하는 코드를 캡슐화한 다음 새로 생성된 객체를 반환합니다
function Person(name, job) { var o = new Object() o.name = name o.job = job o.sayName = function() { console.log(this.name) } return o } var person1 = new Person(‘Jiang', ‘student') person1.sayName()
这个模式,除了使用new操作符并把使用的包装函数叫做构造函数之外,和工厂模式几乎一样
构造函数如果不返回对象,默认也会返回一个新的对象,通过在构造函数的末尾添加一个return语句,可以重写调用构造函数时返回的值
稳妥构造函数模式
首先明白稳妥对象指的是没有公共属性,而且其方法也不引用this。
稳妥对象最适合在一些安全环境中(这些环境会禁止使用this和new),或防止数据被其他应用程序改动时使用
稳妥构造函数模式和寄生模式类似,有两点不同:一是创建对象的实例方法不引用this,而是不使用new操作符调用构造函数
function Person(name, job) { var o = new Object() o.name = name o.job = job o.sayName = function() { console.log(name) } return o } var person1 = Person(‘Jiang', ‘student') person1.sayName()
和寄生构造函数模式一样,这样创建出来的对象与构造函数之间没有什么关系,instanceof操作符对他们没有意义
위 내용은 JavaScript를 사용하여 객체를 생성하는 7가지 방법의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











얼굴 검출 및 인식 기술은 이미 상대적으로 성숙하고 널리 사용되는 기술입니다. 현재 가장 널리 사용되는 인터넷 응용 언어는 JS입니다. 웹 프런트엔드에서 얼굴 감지 및 인식을 구현하는 것은 백엔드 얼굴 인식에 비해 장점과 단점이 있습니다. 장점에는 네트워크 상호 작용 및 실시간 인식이 줄어 사용자 대기 시간이 크게 단축되고 사용자 경험이 향상된다는 단점이 있습니다. 모델 크기에 따라 제한되고 정확도도 제한됩니다. js를 사용하여 웹에서 얼굴 인식을 구현하는 방법은 무엇입니까? 웹에서 얼굴 인식을 구현하려면 JavaScript, HTML, CSS, WebRTC 등 관련 프로그래밍 언어 및 기술에 익숙해야 합니다. 동시에 관련 컴퓨터 비전 및 인공지능 기술도 마스터해야 합니다. 웹 측면의 디자인으로 인해 주목할 가치가 있습니다.

MySQL 쿼리 결과 배열을 객체로 변환하는 방법은 다음과 같습니다. 빈 객체 배열을 만듭니다. 결과 배열을 반복하고 각 행에 대해 새 개체를 만듭니다. foreach 루프를 사용하여 각 행의 키-값 쌍을 새 개체의 해당 속성에 할당합니다. 개체 배열에 새 개체를 추가합니다. 데이터베이스 연결을 닫습니다.

인터넷 금융의 급속한 발전으로 인해 주식 투자는 점점 더 많은 사람들의 선택이 되었습니다. 주식 거래에서 캔들 차트는 주가의 변화 추세를 보여주고 투자자가 보다 정확한 결정을 내리는 데 도움이 되는 일반적으로 사용되는 기술적 분석 방법입니다. 이 기사에서는 PHP와 JS의 개발 기술을 소개하고 독자가 주식 캔들 차트를 그리는 방법을 이해하도록 유도하며 구체적인 코드 예제를 제공합니다. 1. 주식 캔들 차트의 이해 주식 캔들 차트를 그리는 방법을 소개하기 전에 먼저 캔들 차트가 무엇인지부터 이해해야 합니다. 캔들스틱 차트는 일본인이 개발했습니다.

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

js와 vue의 관계: 1. 웹 개발의 초석인 JS 2. 프론트엔드 프레임워크로서의 Vue.js의 등장 3. JS와 Vue의 상호 보완적인 관계 4. JS와 Vue의 실제 적용 Vue.

PHP에서 배열은 순서가 지정된 시퀀스이며 요소는 인덱스로 액세스됩니다. 객체는 new 키워드를 통해 생성된 속성과 메서드가 있는 엔터티입니다. 배열 액세스는 인덱스를 통해 이루어지며, 객체 액세스는 속성/메서드를 통해 이루어집니다. 배열 값이 전달되고 객체 참조가 전달됩니다.

C++에서는 함수가 객체를 반환할 때 주의해야 할 세 가지 사항이 있습니다. 객체의 수명 주기는 메모리 누수를 방지하기 위해 호출자가 관리합니다. 매달린 포인터를 피하고 메모리를 동적으로 할당하거나 개체 자체를 반환하여 함수가 반환된 후에도 개체가 유효한지 확인하세요. 컴파일러는 성능을 향상시키기 위해 반환된 개체의 복사 생성을 최적화할 수 있지만 개체가 값 의미 체계에 따라 전달되는 경우 복사 생성이 필요하지 않습니다.

PHP의 요청 객체는 클라이언트가 서버로 보낸 HTTP 요청을 처리하는 데 사용되는 객체입니다. Request 객체를 통해 요청 메소드, 요청 헤더 정보, 요청 매개변수 등과 같은 클라이언트의 요청 정보를 얻어 요청을 처리하고 응답할 수 있습니다. PHP에서는 $_REQUEST, $_GET, $_POST 등과 같은 전역 변수를 사용하여 요청된 정보를 얻을 수 있지만 이러한 변수는 객체가 아니라 배열입니다. 요청사항을 보다 유연하고 편리하게 처리하기 위해
