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


Posted in Javascript onFebruary 22, 2009

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 相关文章推荐
jquery 插件 人性化的消息显示
Jan 21 Javascript
js动态加载以及确定加载完成的代码
Jul 31 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
checkbox设置复选框的只读效果不让用户勾选
Aug 12 Javascript
js中判断用户输入的值是否为空的简单实例
Dec 23 Javascript
原生JavaScript编写俄罗斯方块
Mar 30 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
Feb 22 Javascript
使用JavaScript实现链表的数据结构的代码
Aug 02 Javascript
微信小程序自定义底部弹出框
Nov 16 Javascript
通过函数作用域和块级作用域看javascript的作用域链
Aug 05 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
javascript eval函数深入认识
Feb 21 #Javascript
JavaScript 判断浏览器类型及版本
Feb 21 #Javascript
JavaScript 调试器简介
Feb 21 #Javascript
用jQuery简化JavaScript开发分析
Feb 19 #Javascript
Javascript 同时提交多个Web表单的方法
Feb 19 #Javascript
javascript function、指针及内置对象
Feb 19 #Javascript
csdn 批量接受好友邀请
Feb 19 #Javascript
You might like
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
htm调用JS代码
2007/03/15 Javascript
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
pytorch自定义初始化权重的方法
2019/08/17 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
机械制造专业个人的自我评价
2013/12/28 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
勾股定理课后反思
2014/04/26 职场文书
社区护士演讲稿
2014/08/27 职场文书
佛光寺导游词
2015/02/10 职场文书
同学毕业留言寄语
2015/02/27 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
交通安全主题班会
2015/08/12 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js