JS应用方法的详细分析
1。继承的对象,一般的做法是:object.extend副本js实现的:
复制代码代码如下所示:
object.extend =函数(目标,源){
对于(源中的属性){
目的地{属性};
}
返回目的地;
}
此外,还有一种方法,那就是Function.apply(当然,function.call也可)
应用程序方法可以劫持另一个对象并继承另一个对象的属性。
的function.apply(obj,args)方法可以得到两参数
Obj:这个对象在函数类替换此对象
参数:这是一个数组,它将作为一个参数传递给函数(参数-->参数)。
应用演示代码如下所示:
复制代码代码如下所示:
函数人(名字,年龄){定义一类人类
此名称= name; / name
这个年龄=年龄
这个跟=函数(){ alert(你好)};
}
函数(打印)
本。funcname =打印;
这个=函数(){
var;
对于(在此中的var键){
如果(typeof(此{key})!=函数{){
Msg.push({关键,:
}
}
警报(msg.join());
};
}
函数学生(姓名,年龄,年级,学校){学生班
person.apply(这个参数);
Print.apply(这个参数);
这个等级=等级;
这个学校=学校/学校。
}
var =新的人(杰克
p1.sayhello();
变量=新学生()
s1.show();
s1.sayhello();
警报(S1。funcname);
学生上课没有任何方法,但在Person.apply(此参数),
他有sayHello方法和人类的所有属性。
这表明()方法自动获得Print.apply(后,参数)
2。改进应用的参数数组
Function.apply()在提高程序性能的技巧
让我们与math.max开始()函数,然后math.max可以采取任何参数并返回所有参数的最大。
如
警报(math.max(5,8)) / / 8
警报(math.max(5,7,9,3,1,6)) / / 9
但在许多情况下,我们需要找到数组中最大的元素。
复制代码代码如下所示:
var arr = { 5,7,9,1 }
警报(math.max(ARR)) / /这是不够的,它必须是这样写的
功能getmax(ARR){
无功arrlen = arr.length;
对于(var i = 0,ret = ARR { 0 };i < arrlen;i++){
ret = math.max(RET,ARR {我});
}
返回页首;
}
这是如此的麻烦和低效:
复制代码代码如下所示:
功能getmax2(ARR){
返回math.max.apply(null,ARR);
}
代码的两段已达到相同的目标,但getmax2优雅、高效,更简洁。
例如,数组的推法。
VaR arr1 = {天};
VaR arr2 = {三};
如果我们要扩大arr2和添加一个到前,然后让1,3,4,3,4,5 arr1 = { }
arr1.push(arr2)显然是不行的。因为它会变得{ } } {三天,
我们只能用一个循环去一推(当然,arr1.concat(arr2),但Concat方法不会改变arr1本身)。
复制代码代码如下所示:
无功arrlen = arr2.length
对于(var i = 0;i < arrlen;i++){
arr1.push(arr2 {我});
}
自从申请以来,事情变得如此简单。
Array.prototype.push.apply(arr1,arr2)