Array.prototype.p1=1; alert(new Array().p1); function func(){ alert(arguments.p1); } func(); |
Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2…]]); |
//定义一个函数func1,具有属性p和方法A function func1(){ this.p="func1-"; this.A=function(arg){ alert(this.p+arg); } } //定义一个函数func2,具有属性p和方法B function func2(){ this.p="func2-"; this.B=function(arg){ alert(this.p+arg); } } var obj1=new func1(); var obj2=new func2(); obj1.A("byA"); //显示func1-byA obj2.B("byB"); //显示func2-byB obj1.A.apply(obj2,["byA"]); //显示func2-byA,其中[“byA”]是仅有一个元素的数组,下同 obj2.B.apply(obj1,["byB"]); //显示func1-byB obj1.A.call(obj2,"byA"); //显示func2-byA obj2.B.call(obj1,"byB"); //显示func1-byB |
function sum(a,b){ return a+b; } alert(sum.length); |
<script language="JavaScript" type="text/javascript"> <!-- //创建两个空对象 var obj1=new Object(); var obj2=new Object(); //给两个对象都添加属性p,并分别等于1和2 obj1.p=1; obj2.p=2; //给obj1添加方法,用于显示p的值 obj1.getP=function(){ alert(this.p); //表面上this指针指向的是obj1 } //调用obj1的getP方法 obj1.getP(); //使obj2的getP方法等于obj1的getP方法 obj2.getP=obj1.getP; //调用obj2的getP方法 obj2.getP(); //--> </script> |