2. 생성자 구현 상속
function Parent(name){
this.name=name
this.sayParent=function(){
Alert("Parent:" this.name) ;
} }
}
function Child(이름, 나이){
this.tempMethod=Parent;
this.tempMethod(이름); age;
this.sayChild=function( ; > parent.sayParent(); //출력: "부모:Jiang Jianchen"
var child=new Child("Li Ming",24); //출력: "아이:리 밍게이지:24"
child .sayChild()
3.call, Apply 상속 구현
코드 복사
코드는 다음과 같습니다
🎜>
js의 호출과 적용은 모두 상속될 수 있습니다. 유일한 매개변수 차이점은 func.call(func1,var1,var2,var3)에 해당하는 적용이 func.apply(func1,[var1,var2, var3]).
JS 매뉴얼 내 호출 설명:
코드 복사
코드는 다음과 같습니다. < ;SPAN style="FONT-SIZE: 18px">call method 현재 개체를 다른 개체로 대체하려면 개체의 메서드를 호출합니다.
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
매개변수
call 메소드를 사용하면 다른 객체 대신 메소드를 호출할 수 있습니다. call 메소드는 함수의 객체 컨텍스트를 초기 컨텍스트에서 thisObj가 지정한 새 객체로 변경합니다.
thisObj 매개변수가 제공되지 않으면 전역 개체가 thisObj로 사용됩니다.
간단히 말하면 이 두 함수의 기능은 실제로 객체의 내부 포인터를 변경하는 것, 즉 객체의 this가 가리키는 내용을 변경하는 것입니다. . 이는 객체 지향 js 프로그래밍에 유용할 때도 있습니다. js에서 이 두 함수의 중요한 역할에 대해 이야기하기 위해 Apply를 예로 들어 보겠습니다. 예:
코드 복사
코드는 다음과 같습니다.
function Person(name,age){ //클래스 정의
this.name=name; //이름
this. age=age; //Age
this.sayhello=function(){alert(this.name)};
}
function Print(){ //클래스 속성 표시
this.funcName = "인쇄";
this.show=function(){
var msg=[];
for(var key in this){
if(typeof(this[key])!= " 기능"){
g.join(" "));
};
}
기능 ,학년,학교){ //학생 클래스
Person.apply (this,arguments);//Place
Print.apply(this,arguments);
this.grade=grade; //Grade
this.school=school //School; > }
var p1=new Person( "부개화",80);
p1.sayhello()
var s1=new Student("바이윤페이",40,9,"웨루학원" );
s1.show();
s1.funcName);
()는 프로그램 성능을 향상시키는 데 중요한 역할을 합니다.
Math.max() 함수부터 시작하겠습니다. Math.max 뒤에는 원하는 수의 매개변수가 올 수 있으며 마지막으로 모든 매개변수 중 최대값을 반환합니다.
예를 들어
코드 복사
코드는 다음과 같습니다.
alert(Math.max(5,8)) //8
Alert(Math.max(5,7,9, 3,1,6)); //9
//하지만 대부분의 경우 배열에서 가장 큰 요소를 찾아야 합니다.
var arr=[5,7,9,1];
//alert(Math.max(arr)) // 이는 불가능합니다. NaN
//다음과 같이 작성하세요
function getMax(arr){
var arrLen=arr.length;
for(var i=0,ret=arr[0];i< arrLen;i ){
ret=Math.max(ret,arr[i]);
경고(getMax(arr))
경고(arr) //9
//적용으로 전환하면 다음과 같이 작성할 수 있습니다.
function getMax2(arr){
return Math.max.apply(null,arr)
}
Alert(getMax2(arr) )); //9
//두 코드는 동일한 목적을 달성하지만 getMax2는 우아하고 효율적이며 훨씬 더 간결합니다.
//또 다른 예는 배열의 푸시 방법입니다.
var arr1=[1,3,4];
var arr2=[3,4,5];
//arr2를 확장하려면 arr1에 하나씩 추가하고 마지막으로 arr1=[1,3,4,3,4,5]
//arr1.push(arr2)는 분명히 작동하지 않습니다. 이렇게 하면 [1,3,4,[3,4,5]]
// 루프를 사용하여 하나씩 푸시할 수 있습니다(물론 arr1.concat( arr2) , 그러나 concat 메소드는 arr1 자체를 변경하지 않습니다)
var arrLen=arr2.length
for(var i=0;i arr1.push( arr2[i ]);
}
//Apply 이후로 모든 것이 매우 간단해졌습니다.
Array.prototype.push.apply(arr1,arr2) //이제 arr1은 원하는 결과