JavaScript는 프로토타입 기반 프로그래밍 언어입니다. JavaScript에서는 각 개체에 프로토타입 개체가 있습니다. JavaScript 프로토타입 체인 메커니즘을 통해 상위 개체의 속성과 메서드에 액세스하고 상속할 수 있으므로 코드 재사용 및 최적화가 가능합니다.
다음은 자바스크립트의 프로토타입 체인 설정에 대한 글입니다. 주로 자바스크립트의 프로토타입 체인이 무엇인지, 프로토타입 객체를 생성하는 방법과 인스턴스 객체를 생성하는 방법을 소개합니다.
1. JavaScript 프로토타입 체인
JavaScript 프로토타입 체인은 각 개체에 속성과 메서드가 포함된 프로토타입 개체(프로토타입)가 있음을 의미합니다. 객체의 속성과 메소드에 접근할 때 JavaScript는 객체 자체에 속성이나 메소드가 있는지 먼저 확인하고, 존재하지 않는 경우 속성이나 메소드를 찾을 때까지 객체의 프로토타입 체인을 검색합니다. 전체 프로토타입 체인에서 해당 속성이나 메서드를 찾을 수 없으면 정의되지 않은 값이 반환됩니다.
JavaScript의 프로토타입 체인 메커니즘을 사용하여 객체 속성과 메서드를 공유함으로써 코드 재사용과 최적화를 달성할 수 있습니다. 일반적으로 상속 기능을 구현할 때 프로토타입 체인 메커니즘을 사용하여 상위 개체의 속성과 메서드를 상속하여 코드 재사용 효과를 얻습니다.
2. 프로토타입 객체 생성
JavaScript에서는 생성자나 객체 리터럴을 통해 프로토타입 객체를 생성할 수 있습니다. 생성자의 프로토타입 객체는 프로토타입 특성을 통해 액세스하고 설정할 수 있습니다. 객체 리터럴의 프로토타입 객체는 __proto__ 속성을 통해 접근하고 설정할 수 있습니다.
1. 생성자를 사용하여 프로토타입 객체를 만듭니다
샘플 코드는 다음과 같습니다.
function Person(name, age) { this.name = name; this.age = age; } Person.prototype.sayHello = function() { console.log('Hello, ' + this.name); };
위의 예에서는 Person 생성자를 정의하고 프로토타입 속성을 사용하여 해당 프로토타입 객체에 sayHello 메서드를 추가했습니다.
생성자를 사용하여 생성된 프로토타입 객체는 인스턴스 객체에 의해 공유되므로 인스턴스 객체를 생성하여 프로토타입 객체의 속성과 메서드에 액세스하고 호출할 수 있습니다.
샘플 코드는 다음과 같습니다.
var person = new Person('Jack', 20); person.sayHello(); // 输出:Hello, Jack
위 샘플 코드에서는 먼저 Person 생성자를 통해 사람 객체 인스턴스를 생성한 후, sayHello 메소드를 호출하여 인사말을 출력합니다.
2. 객체 리터럴을 사용하여 프로토타입 객체 생성
샘플 코드는 다음과 같습니다.
var person = { name: '', age: '', sayHello: function() { console.log('Hello, ' + this.name); } };
위의 샘플 코드에서는 객체 리터럴을 사용하여 name, age, sayHello 속성과 메서드가 포함된 person 객체를 생성합니다. . 또한 객체 리터럴에서는 __proto__ 속성을 사용하여 프로토타입 객체에 액세스하고 설정할 수 있습니다.
샘플 코드는 다음과 같습니다.
var person1 = { name: 'Jack', age: 20, }; var person2 = { name: 'Lucy', age: 18, }; person1.__proto__ = person; person2.__proto__ = person; person1.sayHello(); // 输出:Hello, Jack person2.sayHello(); // 输出:Hello, Lucy
위 샘플 코드에서는 먼저 person1과 person2의 두 인스턴스 객체를 생성한 다음 __proto__ 속성을 통해 위에서 정의한 person 객체를 프로토타입 객체로 지정하여 sayHello를 달성했습니다. 메소드는 공유되며 인스턴스 객체에서 직접 액세스하고 호출할 수 있습니다.
3. 인스턴스 객체 생성
JavaScript에서는 생성자나 객체 리터럴을 통해 인스턴스 객체를 생성할 수 있습니다. 생성자가 인스턴스 객체를 생성할 때 new 키워드를 사용하면 자동으로 생성자를 호출하고 새 인스턴스 객체를 반환할 수 있습니다. 객체 리터럴은 인스턴스 객체를 직접 생성합니다.
1. 생성자를 사용하여 인스턴스 객체를 만듭니다
샘플 코드는 다음과 같습니다.
function Person(name, age) { this.name = name; this.age = age; } Person.prototype.sayHello = function() { console.log('Hello, ' + this.name); }; var person = new Person('Jack', 20); person.sayHello(); // 输出:Hello, Jack
위 샘플 코드에서는 먼저 Person 생성자를 정의하고 해당 프로토타입 객체에 sayHello 메서드를 추가합니다. 그런 다음 new 키워드를 사용하여 Person 생성자를 호출하고, person 개체 인스턴스를 만들고, sayHello 메서드를 호출하여 인사말을 출력합니다.
2. 객체 리터럴을 사용하여 인스턴스 객체 생성
샘플 코드는 다음과 같습니다.
var person = { name: '', age: '', sayHello: function() { console.log('Hello, ' + this.name); } }; var person1 = Object.create(person); person1.name = 'Jack'; person1.age = 20; person1.sayHello(); // 输出:Hello, Jack var person2 = Object.create(person); person2.name = 'Lucy'; person2.age = 18; person2.sayHello(); // 输出:Hello, Lucy
위 샘플 코드에서는 먼저 객체 리터럴을 사용하여 사람 객체를 생성한 다음 Object.create 메서드를 사용하여 두 개의 인스턴스를 생성했습니다. person1 및 person2 개체를 만들고 해당 프로토타입 개체를 사람 개체로 지정합니다. 마지막으로 person1 및 person2 개체에 각각 name 및 age 속성을 설정하고 sayHello 메서드를 호출하여 인사말을 출력합니다.
위 내용은 JavaScript에서 프로토타입 체인을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!