0
는 다음 코드를 감안할 때 :프로토 타입 함수는 'this'를 사용할 때 어디에서 가리켜 야합니까?
var User = function(name) {
this.name = name;
};
User.prototype.sayHello = function() {
console.log('Hi my name is ' + this.name + '.');
};
var user1 = new User('Bob');
user1.sayHello();
내가 지금까지 배운 것이 어휘에 앉아 개체에서 전역 객체에 함수 명령문 포인트에 사용, 및 방법에 사용되는 경우 this
키워드
new
키워드는 빈 개체를 만들고 생성자를 호출하여 해당 새 개체를 가리 키도록합니다.
하지만 내가 이해하지 못하는 것은 user1이 sayHello
함수를 소유하고 있지 않기 때문에 프로토 타입 체인을 따라갑니다. 그러나 프로토 타입의 함수는 this.name
을 참조 할 곳을 어떻게 알고 있습니까?
콘솔의 출력은 다음과 같습니다 때문에 Hi my name is Bob.
을 교육합니다 밥으로 해결 rd는 새로운 객체를 생성 할뿐만 아니라 프로토 타입을 새로운 객체에 '자동으로'바인딩합니다. 따라서 user1 자체가 그 메소드를 정의하지는 않았지만 여전히 user1의 메소드입니다. user1 인스턴스의 프로토 타입 체인의 첫 번째 단계는 User.prototype이고 프로토 타입 메서드는 호출 된 인스턴스를이 값으로 사용합니다. – Shilly