手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript基本概念初级讲解论坛贴的学习记录
JavaScript基本概念初级讲解论坛贴的学习记录
摘要:1.关于this对象复制代码代码如下:viewplaincopytoclipboardprint?varobj1=newObject();v...

1.关于this对象

复制代码 代码如下:

view plaincopy to clipboardprint?

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方法,结果显示为1

obj1.getP();

//使obj2的getP方法等于obj1的getP方法

obj2.getP=obj1.getP;

//调用obj2的getP方法,结果显示为2

obj2.getP();

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方法,结果显示为1

obj1.getP();

//使obj2的getP方法等于obj1的getP方法

obj2.getP=obj1.getP;

//调用obj2的getP方法,结果显示为2

obj2.getP();

2.关于函数对象

复制代码 代码如下:

//增加函数对象方法method1

Function.prototype.method1=function(){

alert("function1");

}

function func1(a,b,c){

return a+b+c;

}

func1.method1(); //提示:function1

func1.method1.method1(); //提示:function1

//增加对象方法getType,既包括普通对象也包括函数对象

Object.prototype.getType=function(){

return typeof(this);

}

var array1=new Array();

function func1(a,b){

return a+b;

}

alert(array1.getType()); //提示:object

alert(func1.getType()); //提示:function

//func2作为一个对象传递给了func1的形参theFunc,再由func1内部进行theFunc的调用

function func1(theFunc){

theFunc();

}

function func2(){

alert("ok");

}

func1(func2); //提示:ok

//当进行函数调用时,除了指定的参数外,还创建一个隐含的对象arguments

function func(a,b){

alert(a);

alert(b);

for(var i=0;i<arguments.length;i++){

alert(arguments[i]);

}

}

func(1,2,3); //提示:1,2,3

/*

arguments对象的另一个属性是callee,

它表示对函数对象本身的引用.

这有利于实现无名函数的递归或者保证函数的封装性.

*/

var sum=function(n){

if(1==n)

return 1;

else

return n+arguments.callee(n-1);

}

alert(sum(100)); //提示:5050

/*

JavaScript为函数对象定义了两个方法:apply和call.

它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:

以下是引用片段:

Function.prototype.apply(thisArg,argArray);

Function.prototype.call(thisArg[,arg1[,arg2…]]);

从函数原型可以看到,第一个参数都被取名为thisArg,

即所有函数内部的this指针都会被赋值为thisArg,

这就实现了将函数作为另外一个对象的方法运行的目的。

两个方法除了thisArg参数,都是为Function对象传递的参数。

*/

//定义一个函数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

/*

可以看出,obj1的方法A被绑定到obj2运行后,

整个函数A的运行环境就转移到了obj2,即this指针指向了obj2。

同样,obj2的函数B也可以绑定到obj1对象去运行。

代码的最后4行显示了apply和call函数参数形式的区别。

*/

/*

与arguments的length属性不同,

函数对象还有一个属性length,

它表示函数定义时所指定参数的个数,

而非调用时实际传递的参数个数

*/

function sum(a,b){

return a+b;

}

alert(sum.length);

【JavaScript基本概念初级讲解论坛贴的学习记录】相关文章:

javascript中eval解析JSON字符串

Javascript实现div层渐隐效果的方法

JavaScript中for循环的使用详解

javascript每日必学之运算符

Javascript随机显示图片的源代码

简述JavaScript中正则表达式的使用方法

JavaScript正则表达式的分组匹配详解

JavaScript基于setTimeout实现计数的方法

详解Javascript中的Object对象

JavaScript动态添加style节点的方法

精品推荐
分类导航