首页 > 代码库 > 函数的属性length、prototype和方法call()、apply()

函数的属性length、prototype和方法call()、apply()

函数的属性length、prototype和方法call()、apply()
length指的是该函数所期望传递进来的参数个数。
function fun0(){}             //0
function fun1(num1){}         //1
function fun2(num1,num2){}    //2

//prototype

function MyObject(name, size)  {  

   this.name = name;  

   this.size = size;  

}  

var obj = new MyObject();

MyObject.prototype.color = "red";  

alert(obj.color);  //red

MyObject.prototype.color = "green";

alert(obj.color);  //green

 

可以说,prototype实际上是“引用”,而非“赋值”。也就是给一个类添加一个属性或者方法,是给它添加了个引用,而非赋值一份给它。

call和apply是可以通过函数名称来调用函数
对于apply而言:
有两个参数,第一个是调用的上下文,第二个是参数数组,可以直接把arguments传递进去
对于call而言:
第一个参数是上下文对象,后面的参数是函数参数

function sum(num1,num2){return num1+num2;}

function callSum1(num1,num2){
  //使用sum这个函数来完成一次调用,调用的参数就是callSum1这个函数的参数
 ` return sum.apply(this,arguments);
   //相当于:return sum.apply(this,[num1,num2]);
}

alert(callSum1(1,2)); //3

function callSum2(num1,num2){
  //call是通过参数列表来完成传递
  return sum.call(this,num1,num2);
}

alert(callSum2(1,2));              //3