Jsアプリとcallの継承が実現しました.

2858 ワード

Funtion.apply:
Function.apply(obj,args)方法は二つのパラメータを受信できます.
このオブジェクトは、Functionクラスのthisオブジェクトの代わりになります.
args:これは配列で、パラメータとしてFunctionに伝えられます.
 
Function.call:
Function.call(obj,[param 1],
このオブジェクトは、Functionクラスのthisオブジェクトの代わりになります.
params:これはパラメータリストです.
 
callとappyは同じです.パラメータリストが違うだけです.
 
Personクラス:
function Person(name,age) {

  this.name = name;

  this.age = age;

}
Studentクラス:
function Student(name,age,height) {

  Person.apply(this,arguments);

  //Person.call(this,name,age,height);   //call       ;    

  this.height = height;

}
実用化:
var student = new Student("chams",22,"173");
テスト:
console.log("name:" + student.name + "  age:" + student.age + "  height:" + student.height);
 
Studentクラスにはnameとageの属性はありませんが、applyとcallの継承により、StudentクラスにPersonクラスのメンバーシップを継承しました.
 
Appleに関するユーティリティ:
1、出力配列の最大要素:
var arrs = [1,70,9,180,19,25,100,2,20];

function maxArrs(arrs){

  return Math.max.apply('',arrs);

}

//console.log(Math.max(arrs));    //    Math.max(    ),  Math.max(1,70,9,180,19,25,100,2,20);    NaN;

console.log(maxArrs(arrs));
 
2、配列のプッシュ方法:
var arrs1=[5,1,3],arrs2=[3,1,5];

Array.prototype.push.apply(arrs1,arrs2);  //[5, 1, 3, 3, 1, 5]

//arrs1.push(arrs2);    //[5, 1, 3, [3, 1, 5]]

console.log(arrs1);
 
arrs 1.push(arrs 2)を使用すると、出力は[5,1,3,3,5]であり、これは、arrs 2の配列全体を一つの要素としてarrs 1に追加するものであって、順次追加するものではない.