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的超简单上下翻
Apr 20 Javascript
遍历jquery对象的代码分享
Nov 02 Javascript
jquery操作checkbox示例分享
Jul 21 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
Dec 08 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
javascript实现数字倒计时特效
Mar 30 Javascript
JS常用知识点整理
Jan 21 Javascript
JavaScript结合HTML DOM实现联动菜单
Apr 05 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
详解基于electron制作一个node压缩图片的桌面应用
Jan 29 Javascript
JavaScript函数Call、Apply原理实例解析
Feb 17 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
phpmyadmin的#1251问题
2006/11/25 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
js 学习笔记(三)
2009/12/29 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
python3.x实现base64加密和解密
2019/03/28 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
python取均匀不重复的随机数方式
2019/11/27 Python
小学岗位竞聘方案
2014/01/22 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
超市工作总结范文2014
2014/12/19 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
一年级语文教学随笔
2015/08/14 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android