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 相关文章推荐
js GridView 实现自动计算操作代码
Mar 25 Javascript
JS实现模拟风力的雪花飘落效果
May 13 Javascript
jquery制作属于自己的select自定义样式
Nov 23 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
js判断空对象的实例(超简单)
Jul 26 Javascript
JS制作类似选项卡切换的年历
Dec 03 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
May 10 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
如何从头实现一个node.js的koa框架
Jun 17 Javascript
微信小程序request请求封装,验签代码实例
Dec 04 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
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php向js函数传参的几种方法
2014/08/10 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
jQuery 技巧小结
2010/04/02 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
token 机制和实现方式
2020/12/15 Javascript
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
Python3实现转换Image图片格式
2018/06/21 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
什么是URL
2015/12/13 面试题
五一服装活动方案
2014/01/11 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
公司门卫岗位职责
2015/04/13 职场文书
庆元旦主持词
2015/07/06 职场文书
法院执行局工作总结
2015/08/11 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
Redis 常见使用场景
2021/08/30 Redis
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏