다음 예제에서는 호출 (및 적용) 메서드 작동 방법을 이해합니다.자바 스크립트 호출 및 생성자 함수에 적용
var Bob = {
name: "Bob",
greet: function() {
alert("Hi, I'm " + this.name);
}
}
var Alice = {
name: "Alice",
};
Bob.greet.call(Alice); // Hi, I'm Alice
위에서 알 수 있듯이 Bob의 인사 방법은 Alice의 범위와 함께 호출됩니다.
아래 예제에서 상속을 허용하는 생성자 함수에서 호출 메서드가 사용되는 상황에서 어떤 일이 일어나고 있는지 설명 할 수 있습니까?
function Product(name, price) {
this.name = name;
this.price = price;
}
function Food(name, price) {
Product.call(this, name, price);
this.category = 'food';
}
var chicken = new Food('chicken','40');
console.log(chicken); //{ name= "chicken", price="40", category="food"}
I 번째 예에서, 반면 일 (경고)을 수행하는 통화 방법은 함수를 호출하는 제 예컨대 제 1 및 제 2 예 사이의 접속을 할 수없는
호출 방법 일부 속성을 초기화하는 생성자 함수에서 사용됩니다.
+1 좋은 게시 ... – tnanoba
내가 이해하지 못하는 주요 부분은 식품 내부에서 제품 기능을 호출 할 때입니다. , 그 기능의 부름은 어떻게 '이'음식에 '이름'과 '가격'속성을 부여합니까? 이 부분을 특히 설명 할 수 있습니까? – eirikrl
@eirikrl :'apply()'와'call()'의 첫 번째 매개 변수가'this'가 함수 내부에 있어야하는 것을 정의하기 때문에, 맞습니까? 'Food' 생성자 내부에서 우리는 생성 한 새로운'Food' 인스턴스 인'this'를 전달합니다 ('this.category'는 "food"로 설정되어 있습니다). 그러므로'Food'에서'call''d 한 후에'Product' 안에'this.something = something'을 할 때마다 * this *가'Food' 인스턴스가됩니다 (this.category = "음식"). – Matt