複製程式碼 程式碼如下:
function Person(name,age){ //定義一個類別
age; //年齡
顯示類別的屬性
this.funcName=" Print";
this.show=function(){
if(typeof(this[key])!="function "){
msg.push([key,":",this[key]].join( }
alert(msg.join(" ") );
};
}
function Student(name,age,grade,school){ ), 學生類別all優越的地方
Print.apply(this,arguments);
this.grade=grade; school=school; //學校
}
var p1=new Person("卜開化",80);
p1.sayhello();
var s1=new Student("白雲飛",40,9,"岳麓學院");
> s1.sayhello();
alert(s1.funcName);
另外,Function.apply()在提升程式效能方面有著突出的作用:
另外,Function.apply()在提升程式效能方面有著突出的作用:
我們先從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){
];i ret=Math.max(ret,arr[i]);
🎜>
alert(getMax(arr)); //9
//改用apply,可以這樣寫
function getMax2(arr){
🎜> alert(getMax2(arr)); //9
//兩段程式碼達到了同樣的目的,但是getMax2卻優雅,高效,簡潔得多。
//再例如陣列的push方法。
var arr1=[1,3,4];
var arr2=[3,4,5];
//如果我們要把arr2展開,然後一個一個追加到arr1中去,最後要把arr1中去設arr1=[1,3,4,3,4,5]
//arr1.push(arr2)明顯是不行的。 因為這樣做會得到[1,3,4,[3,4,5]]
//我們只能用一個循環去一個一個的push(當然也可以用arr1.concat(arr2) ,但concat方法並不會改變arr1本身)
var arrLen=arr2.length;
for(var i=0;i }
//自從有了Apply,事情就變得如此簡單
Array.prototype.push.🎜>
Array.prototype.push.o.想要的結果