JavaScript에는 상속 키워드인 확장이 없습니다. 그렇다면 생성자를 사용하여 객체를 생성할 때 다른 생성자를 기반으로 객체의 속성을 생성(상속/복사)하려면 어떤 방법을 사용합니까? 즉, 객체를 생성하기 위해 함수에 new 키워드를 사용할 때 객체의 속성은 다른 함수에서 나올 수 있습니다.
이 글은 두 가지 작성 방법을 제공합니다:
첫 번째(비공식):
그러나 이 사용법을 이해해야 합니다.
자바스크립트 코드
함수 동물(이름, 나이){
this.name = 이름
this.age = age;
}
d = new Dog('hello',20)
console .log(d);
/*
개 {이름: "안녕하세요", 나이: 20}
age: 20
i: function Animal(이름, 나이)
name: "hello"
__proto__:
생성자: functionDog(name) , age)
*/
위의 작성 방식은 Animal 외부 함수를 자체 내부 함수 중 하나로 참조하는 것입니다. 회원 기능.익명 함수를 작성하는 방법입니다.
은 다음과 같습니다.
Javascript 코드 function Dog(이름, 나이){
this.i = function Animal(이름, 나이 ){
this.name = 이름;
this.age = 나이
}
this.i(이름, 나이); 🎜 >
} 은 다음과 동일합니다:Javascript 코드
기능 개(이름, 나이){
/*
함수를 호출할 때 'new' 키워드를 사용하여
객체를 생성하는 대신
생각하기: 함수를 호출할 때 "이것"은 누구입니까? ?
이후 함수 호출은 "this" 객체를 생성하지 않습니다.
그렇다면 Dog 내에서 Animal을 직접 호출하는 것은 불가능한 걸까요?
답변: 아니요
Java 코드
/*
호출된 함수가 속한 'this', 내부의 'this'
호출된 함수는 해당 'this' 객체를 참조합니다.
*/
함수 Dog(이름, 나이){ // 호출하는 경우 Animal direct,
Animal(name,age); // 여기서 Animal 함수는 'window'에 속합니다.
} // 따라서 Animal 내부의 'this'는 'window'를 참조합니다. 🎜>
두 번째(정식):
apply() 함수 또는 call() 함수 사용
apply(): "이 " 객체 적용 (that) 함수에 호출한 다음 이를 호출합니다. = name; apply(this, 인수); // "this" 개체를 Animal 함수에 적용합니다. // 주어진 'this'를 사용하여 Animal 함수를 호출합니다. | 다른 '이것'에
}