}
}
関数 Class2()
{
this.name = "class2";
var c1 = new Class1();
var c2 = new Class2();
c1.showNam.call(c2); c1 のメソッドが c2 で実行されました。c2 には showNam() メソッドがないことがわかり、c1 の showNam() メソッドは実行のために c2 に配置されるため、this.name は class2 になるはずです。は: アラート ("クラス 2");
多重継承の例:
関数Class10()
{
this.showSub = function(a,b)
{
alert(a-b);
}
}
function Class11()
{
this.showAdd = function(a,b)
{
alert(a b)
}
}
function Class2();
{
Class10.call(this);
Class11.call(this)
}
5.apply 関数:
Function。apply(obj,args) メソッドは 2 つのパラメーターを受け取ることができます。
obj: このオブジェクトは Function クラスのこのオブジェクトを置き換えます。
args: これは配列であり、パラメーターとして Function に渡されます ( args-->arguments)
呼び出しのような継承の効果を実現します:
function person(name,age){ // クラス、人間を定義します
this.name=name; //Name
this.age=age
this.sayhello=function(){alert ("hello")};
}
function Print(){ //クラス属性を表示します
this.funcName="Print"; .show=function(){
var msg=[];
for(this の var key){
if(typeof(this[key])!="function"){
msg .push([key,":", this[key]].join(""));
}
}
alert(msg.join(" "));
}
function Student( name,age,grade,school){ //学生クラス
person.apply(this,arguments);
Print.apply(this,arguments); this.grade=grade; //Grade
this.school=school; //school
}
var p1=new Person("jake",10);
var s1=new Student(" tom",13,6,"清華小学校");
s1.sayhello(); );
配列パラメーターの関数を最適化するには、apply を使用します。これはクールなメソッドです:
コードをコピーします
alert(Math.max(5,7,9,3,1,6)) //9
しかし、多くの場合、配列内の最大の要素を見つける必要があります。
var arr=[5,7,9,1]
alert(Math.max(arr)) // これは機能しません。必ず次のように記述してください。
function getMax(arr){
var arrLen=arr.length;
for(var i=0,ret=arr[0];i
ret=Math.max(ret,arr[i]);
}
return ret;
apply を使用するには、次のコードを参照してください。 🎜>function getMax2( arr){
return Math.max.apply(null,arr);
}
2 つの配列をマージする別の例を次に示します。 >
コードをコピー
コードは次のとおりです:
もう 1 つの例は、配列のプッシュ メソッドです。
var arr1=[1,3,4];
var arr2=[3,4,5]; arr2 を 1 つずつ追加し、最後に arr1 を追加します。 =[1,3,4,3,4,5] arr1.push(arr2) は明らかに機能しません。 これを実行すると [1,3,4,[3,4,5]] が取得されるため、 ループを使用して 1 つずつプッシュすることしかできません (もちろん、arr1.concat(arr2) を使用することもできます)ただし、 concat メソッドは arr1 自体を変更しません) var arrLen=arr2.length
for(var i=0;i
arr1.push(arr2[i]);
}
適用を使用するには:
コードをコピーします
コードは次のとおりです。