> 웹 프론트엔드 > JS 튜토리얼 > 프로토타입과 프로토타입 체인의 특성과 용도를 이해합니다.

프로토타입과 프로토타입 체인의 특성과 용도를 이해합니다.

王林
풀어 주다: 2024-01-10 12:15:00
원래의
1277명이 탐색했습니다.

프로토타입과 프로토타입 체인의 특성과 용도를 이해합니다.

프로토타입과 프로토타입 체인의 특징과 응용을 살펴보세요

1. 프로토타입과 프로토타입 체인이 무엇인가요?

JavaScript에서는 모든 객체에 프로토타입 객체가 있습니다. 프로토타입 객체도 객체이며 속성과 메서드를 가질 수 있습니다. JavaScript의 개체는 프로토타입 기반입니다. 즉, 한 개체가 다른 개체의 속성과 메서드를 상속할 수 있습니다.

객체의 프로토타입 객체는 프로토타입 객체에 대한 참조인 __proto__属性来访问。这个__proto__ 속성을 통해 객체의 프로토타입 객체를 가리킬 수 있습니다. 프로토타입 체인을 통해 객체는 프로토타입 체인을 따라 속성과 메서드를 조회할 수 있습니다.

2. 프로토타입의 특징

  1. 오브젝트의 프로토타입 객체는 공유됩니다. JavaScript에서는 새 개체를 만들면 자동으로 프로토타입 개체와 연결됩니다. 여러 객체를 동일한 프로토타입 객체에 연결할 수 있으므로 프로토타입 객체의 속성과 메서드를 공유할 수 있습니다.

코드 예:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.greet = function() {
  console.log('Hello, ' + this.name + '!');
};

var person1 = new Person('Alice', 20);
var person2 = new Person('Bob', 25);

console.log(person1.__proto__ === person2.__proto__);  // true
로그인 후 복사
  1. 객체는 프로토타입 객체의 속성과 메서드를 사용할 수 있습니다. 객체의 속성에 액세스하거나 객체에 대한 메서드를 호출할 때 객체 자체에 이 속성이나 메서드가 없으면 프로토타입 체인을 따라 조회됩니다.

코드 예:

person1.greet();  // Hello, Alice!

console.log(person1.hasOwnProperty('name'));  // true,对象自身有name属性
console.log(person1.hasOwnProperty('greet'));  // false,对象自身没有greet方法

console.log(person1.__proto__.hasOwnProperty('greet'));  // true,原型对象有greet方法

person1.name = 'Eve';

console.log(person1.hasOwnProperty('name'));  // true,对象自身有name属性,不会修改原型对象的属性
로그인 후 복사

3. 프로토타입 체인의 특징

  1. 프로토타입 체인은 객체 간의 관계입니다. 프로토타입 체인을 통해 객체는 프로토타입 체인의 최상위를 찾거나 도달할 때까지 속성과 메서드를 수준별로 조회할 수 있습니다.
  2. 프로토타입 체인은 선형입니다. 프로토타입 체인에서 각 개체에는 상위 개체인 하나의 프로토타입만 있습니다.

코드 예:

function Animal(name) {
  this.name = name;
}

function Cat(name, color) {
  this.name = name;
  this.color = color;
}

Cat.prototype = new Animal();

var cat = new Cat('Tom', 'blue');

console.log(cat instanceof Cat);  // true
console.log(cat instanceof Animal);  // true

console.log(cat.hasOwnProperty('name'));  // true,对象自身有name属性
console.log(cat.hasOwnProperty('color'));  // true,对象自身有color属性

console.log(cat.__proto__ === Cat.prototype);  // true
console.log(Cat.prototype.__proto__ === Animal.prototype);  // true
console.log(Animal.prototype.__proto__ === Object.prototype);  // true,原型链的顶端是Object.prototype
로그인 후 복사

4. 프로토타입 및 프로토타입 체인 적용

  1. 상속: 프로토타입 체인을 통해 객체 간의 상속 관계를 구현할 수 있습니다. 자식 개체의 프로토타입 개체는 부모 개체를 가리키므로 자식 개체는 부모 개체의 속성과 메서드를 상속받을 수 있습니다.

코드 예:

function Animal(name) {
  this.name = name;
}

Animal.prototype.eat = function() {
  console.log(this.name + ' is eating.');
};

function Cat(name, color) {
  this.name = name;
  this.color = color;
}

Cat.prototype = new Animal();

var cat = new Cat('Tom', 'blue');

cat.eat();  // Tom is eating.
로그인 후 복사
  1. 속성 및 메서드 공유: 프로토타입 개체를 통해 여러 개체 간에 속성 및 메서드를 공유할 수 있습니다. 이렇게 하면 특히 여러 인스턴스가 동일한 속성과 메서드를 공유해야 하는 경우 메모리 공간이 절약됩니다.

코드 예:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHi = function() {
  console.log('Hi, I am ' + this.name);
};

var person1 = new Person('Alice', 20);
var person2 = new Person('Bob', 25);

person1.sayHi();  // Hi, I am Alice
person2.sayHi();  // Hi, I am Bob
로그인 후 복사

요약:

프로토타입과 프로토타입 체인은 JavaScript에서 중요한 개념으로 객체 간 상속 및 공유 메커니즘을 형성합니다. 프로토타입과 프로토타입 체인을 통해 객체의 속성과 메서드를 더 잘 구성 및 관리하고 코드 재사용성과 유지 관리성을 향상시킬 수 있습니다. 실제 개발 시 프로토타입과 프로토타입 체인의 특성과 응용에 대한 깊은 이해와 숙련도는 자바스크립트 프로그래밍 능력 향상에 도움이 됩니다.

위 내용은 프로토타입과 프로토타입 체인의 특성과 용도를 이해합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿