자바스크립트의 프로토타입
함수는 특수한 종류의 객체이기는 하지만 Javascript의 객체이기도 합니다.
예:
function sum(a,b) {
return a+b;
}
console.log(typeof sum); // "function" :)
Still an object with internal [[call]] method
따라서 함수에 대해 다음을 수행할 수 있습니다.
예:
sum.prop1 = "random property";
console.log(sum.prop1); // "random property"
유사하게, "prototype"은 Javascript의 함수에 내장된 속성입니다(이전 버전과의 호환성 문제로 인해 프로토타입 속성이 함수인 Function 함수 제외).
메모:
"프로토타입"자체는 해당 기능 종류의 객체입니다.
예:
console.log(typeof sum.prototype); // "object"
이제 자바스크립트에서 객체를 생성하는 한 가지 방법은 "new"키워드를 사용하여 함수를 호출하는 것입니다(주로 생성자 함수 사용).
예:
function Person(name, age) {
this.name = name;
this.age = age;
}
const p1 = new Person("John", 25);
console.log(typeof p1); // "object"
이제 "p1"개체와 "Person.prototype"개체의 생성자 속성을 보면 "Person"함수와 같습니다.
예:
p1.constructor === Person // true
Person.prototype.constructor === Person // true
이것은 함수 객체의 "prototype"속성이 함수 자체를 참조한다는 것을 증명합니다.
프로토타입 사용:
프로토타입 체인을 따라 상속되어야 하는 함수의 속성은 "프로토타입"개체 내부에 정의되어 있습니다. 프로토타입으로 인해 Javascript에서 상속이 가능합니다.
예: Person의 "prototype"객체에 getInfo 속성을 정의합시다.
Person.prototype.getInfo = function() {
return `I am ${this.name}, age ${age}`;
}
const p2 = new Person("Sam", 30);
console.log(p2.getInfo()); // "I am Sam, age 30"
"getInfo"는 Person의 "prototype"에 정의되어 프로토타입 체인을 따라 상속 가능한 속성이 되기 때문에 "p2"개체 또는 Person을 상속하는 생성 함수에서 생성된 모든 개체에서 "getInfo"속성에 액세스할 수 있습니다.
참고: "p2"개체가 기술적으로 "getInfo"속성에 액세스하는 방법이 궁금하다면 개체가 자체적으로 속성을 찾지 못하면 다음 방법을 사용하여 프로토타입 개체에서 찾기 때문입니다.
p2.__proto__ === Person.prototype
// true -- soon to be deprecated, not recommended
Object.getPrototypeOf(p2) === Person.prototype
// true -- recommended
Reference
이 문제에 관하여(자바스크립트의 프로토타입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/uprince/prototypes-in-javascript-b47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)