그래서 자바스크립트에는 클래스라는 개념이 없습니다. 독자가 더 쉽게 이해할 수 있도록 많은 JavaScript 튜토리얼에서는 일반적으로 사용되는 클래스 패턴의 개념을 적용하므로 모든 사람에게 모호함을 야기합니다.
코드의 첫 번째 부분,
함수 직원(){
this.name="";
this.dept="";
}
employee.prototype={
말:'안녕하세요'
}
var p = new Employee();
이 코드를 자주 사용하게 되는데 new 키워드가 가장 헷갈립니다. 여기서 new가 수행하는 작업은 .NET의 작업과 다릅니다.
JavaScript에서 new 연산을 사용하여 인스턴스를 생성하는 과정을 이런 식으로 이해할 수 있습니다. new 키워드는 직원 생성자의 멤버 변수를 복사하는 Employee()를 템플릿으로 사용하여 새 객체를 생성합니다. p 개체가 생성자에 매개 변수로 전달되고 함수의 모든 멤버 변수가 적용되며 생성자의 프로토타입이 상속되는 것으로 이해됩니다.
우리는 코드를 사용하여 새로운 프로세스를 시뮬레이션합니다.
//var p = new Object()
var p ={};
employee.apply(p);
p.__proto__ = Employee.prototype;
__proto__는 javascript 객체 인스턴스 생성자의 프로토타입 속성, 즉 직원을 가리킵니다. 객체가 p.say와 같은 멤버 변수를 찾을 때 먼저 자체 멤버 속성을 찾으면 반환합니다. 값을 찾을 수 없으면 __proto__를 호출하여 프로토타입을 확인합니다. 현재 예인 Chain은 Employee.prototype에서 say 멤버를 찾는 것입니다.