当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JavaScript基本概念初级讲解论坛贴的学习记录

Javascript
提高网站信任度的技巧
javascript脚本编程解决考试分数统计问题
图片上传之前检查大小、尺寸、格式并预览的js代码
JavaScript打开客户端exe文件的代码
JavaScript confirm选择判断
javascript title闪动效果
javascript把15位身份证转成18的函数
新人报道,发个小技巧(js数组重复判断)
Javascript this关键字使用分析
javascript TextArea动态显示剩余字符
JavaScript Undefined,Null类型和NaN值区别
javascript Select标记中options操作方法集合
javascript trim 去空格函数实现代码
javascript网页关闭时提醒效果脚本
checkbox 多选框 联动实现代码
收集的比较全的automation服务器不能创建对象 异常原因和解决方法
Javascript客户端将指定区域导出到Word、Excel的代码
IE浏览器兼容Firefox的JS脚本的代码
在html页面中包含共享页面的方法
javascript replace()用法详解附实例代码

Javascript 中的 JavaScript基本概念初级讲解论坛贴的学习记录


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 262 ::
收藏到网摘: n/a

JavaScript基本概念 论坛贴建议大家看下,都是一些js的高级的技巧知识小结。 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);