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数独游戏解析(一)-页面布局
Nov 05 Javascript
JavaScript词法作用域与调用对象深入理解
Nov 29 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
JS实现向表格中动态添加行的方法
Mar 30 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
JavaScript代码性能优化总结(推荐)
May 16 Javascript
js实现砖头在页面拖拉效果
Nov 20 Javascript
微信小程序 判断手机号的实现代码
Apr 19 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
JS代码触发事件代码实例
Jan 02 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 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使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
小程序实现投票进度条
2019/11/20 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
Python实现股市信息下载的方法
2015/06/15 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Python多项式回归的实现方法
2019/03/11 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
若干个Java基础面试题
2015/05/19 面试题
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
如何利用golang运用mysql数据库
2022/03/13 Golang
JS class语法糖的深入剖析
2022/07/07 Javascript