apply()Function.prototype.apply()将会调用一个以this和数组形式的arguments为参数的方法。mfun.apply(thisArg,[argsArray])每当要为一个新的对象添加一个方法时,有时不得不为其重写一个方法。而如果利用apply的话,只需要写一次方法,然后在这个新的对象中继承它即可,十分方便。apply和call方法十分相似,仅仅只是参数不同而已,但正是因为这一点,我们在用apply时不必知道被调用的对象的具体参数,可以只穿arguments,如此一来,被调用的这个对象将负责handle触底的arguments。1.我们可以像Java那样,利用apply为一个对象创建构造链。在下面的例子中,我们将创建一个名为construct的全局方法,这个方法可以不必让你传递一个一个的参数,取而代之的则是传递一个参数数组。// Function.prototype.construct = function(aArgs) {// var oNew = Object.create(this.prototype);// this.apply(oNew, aArgs);// return oNew;// };//Function.prototype.construct = function(aArgs) {// var fConstructor = this, fNewConstr = function() { // fConstructor.apply(this, aArgs); // };// fNewConstr.prototype = fConstructor.prototype;// return new fNewConstr();//};Function.prototype.construct = function (aArgs) { var fNewConstr = new Function(""); fNewConstr.prototype = this.prototype; var oNew = new fNewConstr(); this.apply(oNew, aArgs); return oNew;};function MyConstructor() { for (var nProp = 0; nProp < arguments.length; nProp++) { this[‘property’ + nProp] = arguments[nProp]; }}var myArray = [4, ‘Hello world!’, false];var myInstance = MyConstructor.construct(myArray);console.log(myInstance.property1); // logs ‘Hello world!‘console.log(myInstance instanceof MyConstructor); // logs ’true’console.log(myInstance.constructor); function minOfArray(arr){ var min = Infinity; var QUANTUM = 32768; var len=arr.length; for(var i=0;i<len;i+=QUANTUM){ var submin = Math.min.apply(null,arr.slice(i,Math.min(i+QUANTUM,len))); min = Math.min(submin,min) } return min;}var min = minOfArray([5,6,2,3,7]);console.log(min)//2 function Person(name,age) { this.name=name; this.age=age; } /定义一个学生类/ function Student(name,age,grade) { Person.apply(this,arguments); this.grade=grade; } //创建一个学生类 var student=new Student(“zhangsan”,21,“一年级”); //测试 alert(“name:"+student.name+"\n”+“age:"+student.age+"\n”+“grade:"+student.grade);