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 回车事件实现代码
Aug 23 Javascript
jquery实现在光标位置插入内容的方法
Feb 05 Javascript
js验证上传图片的方法
May 12 Javascript
jQuery链式操作实例分析
Nov 16 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 Javascript
基于jQuery实现的查看全文功能【实用】
Dec 11 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
Node.js使用Angular简单示例
May 11 Javascript
微信小程序自定义多选事件的实现代码
May 17 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
JavaScript中关于base64的一些事
May 06 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 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 array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
python字符串替换示例
2014/04/24 Python
python中私有函数调用方法解密
2016/04/29 Python
python的中异常处理机制
2018/08/30 Python
Python函数返回不定数量的值方法
2019/01/22 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
在python中做正态性检验示例
2019/12/09 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
浅析python中的del用法
2020/09/02 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
初中体育教学反思
2014/01/14 职场文书
一帮一活动总结
2014/05/08 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
标准版离职证明书
2014/09/12 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
Python自动化实战之接口请求的实现
2022/05/30 Python
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL