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

Javascript
自己开发Dojo的建议框架
js每次Title显示不同的名言
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
无限级别的菜单(侧拉菜单)
点选TOP后并不是直接跳到页顶的,而是滚动上去
js下拉菜单中自动信息轮换播放
英文首字母全大写的js实现脚本
实例区别onClick和onDBClick两事件方法
改变文本框字体颜色的js脚本
js星空效果代码
判断li是否有样式的js代码
文本框点击时文字消失,失去焦点时文字出现
如何让一个层关闭之后,就算刷新页面了也不显示。除非关闭页面再次打开
右下角弹出窗口效果代码
JS控制对象移动效果
验证用户是否修改过页面的数据的实现方法
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
EXT富客户端后台管理系统 初步代码
不同浏览器javascript变量作用域的处理方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 265 ::
收藏到网摘: 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);