>  기사  >  프로토타입과 프로토타입 체인이란 무엇입니까?

프로토타입과 프로토타입 체인이란 무엇입니까?

百草
百草원래의
2023-11-09 17:59:482206검색

Prototype은 다른 개체의 속성과 메서드를 정의하는 데 사용됩니다. 각 생성자는 프로토타입 개체를 가리키는 포인터입니다. 메소드는 생성자의 프로토타입 속성에서 상속됩니다. 프로토타입 체인, 객체의 속성에 액세스하려고 하면 js는 먼저 객체에 이 속성이 있는지 확인합니다. 그렇지 않은 경우 js는 객체의 프로토타입으로 전환합니다. 계속해서 프로토타입의 프로토타입을 찾아보세요.

프로토타입과 프로토타입 체인이란 무엇입니까?

이 튜토리얼의 운영 체제: Windows 10 시스템, DELL G3 컴퓨터.

프로토타입과 프로토타입 체인은 객체 지향 프로그래밍, 특히 동적 프로토타입을 지원하는 JavaScript와 같은 언어에서 중요한 개념입니다. 프로토타입과 프로토타입 체인을 이해하는 것은 객체가 생성되고 사용되는 방법과 해당 메서드를 호출하는 방법을 이해하는 데 중요합니다.

프로토타입:

프로토타입은 다른 개체의 속성과 메서드를 정의하는 데 사용되는 JavaScript의 개체입니다. 각 생성자에는 프로토타입 개체에 대한 포인터인 프로토타입 특성이 있습니다. 새 객체가 생성되면 새 객체는 해당 생성자(즉, 프로토타입 객체)의 프로토타입 특성에서 속성과 메서드를 상속합니다.

예:

function Person(name) {  
  this.name = name;  
}  
  
Person.prototype.sayHello = function() {  
  return 'Hello, my name is ' + this.name;  
};  
  
let person1 = new Person('Alice');  
let person2 = new Person('Bob');  
  
console.log(person1.sayHello()); // 输出: 'Hello, my name is Alice'  
console.log(person2.sayHello()); // 输出: 'Hello, my name is Bob'

위의 예에서는 Person.prototype을 통해 Person 생성자와 sayHello 메서드를 정의했습니다. 그런 다음 두 개의 Person 객체를 생성했는데 둘 다 sayHello 메소드를 상속했습니다. 이는 모두 프로토타입 개체 Person.prototype에서 상속되기 때문입니다.

프로토타입 체인:

객체의 속성에 액세스하려고 하면 JavaScript는 먼저 객체에 이 속성이 있는지 확인합니다. 그렇지 않은 경우 JavaScript는 객체의 프로토타입(즉, 생성자의 프로토타입 속성)을 사용합니다. 프로토타입 객체에 이 속성이 없으면 JavaScript는 이 속성이 있는 객체를 찾거나 프로토타입 체인의 맨 위에 도달할 때까지(즉, null) 프로토타입의 프로토타입 등을 계속 찾습니다. 이를 프로토타입 체인이라고 합니다.

예:

function Person(name) {  
  this.name = name;  
}  
  
Person.prototype.sayHello = function() {  
  return 'Hello, my name is ' + this.name;  
};  
  
let person1 = new Person('Alice');  
delete person1.sayHello; // 删除person1的sayHello属性  
  
console.log(person1.sayHello()); // 输出: 'Hello, my name is Alice'

위의 예에서는 person1의 sayHello 속성을 삭제했습니다. person1.sayHello()에 액세스하려고 하면 JavaScript는 먼저 person1에 sayHello 속성이 있는지 확인합니다. person1에는 이 속성이 없기 때문에 JavaScript는 sayHello 메소드가 있는 person1의 프로토타입(즉, Person.prototype)으로 전환되어 호출됩니다. 이것이 바로 프로토타입 체인의 목적입니다. 프로토타입 체인은 객체 자체에 속성과 메서드가 정의되지 않은 경우에도 객체의 속성과 메서드를 공유하는 방법을 제공합니다.

위 내용은 프로토타입과 프로토타입 체인이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.