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 相关文章推荐
firefox中JS读取XML文件
Dec 21 Javascript
jquery创建并行对象或者合并对象的实现代码
Oct 10 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 Javascript
js实现的万能flv网页播放器代码
Apr 30 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
Vue.js实战之Vuex的入门教程
Apr 01 Javascript
令按钮悬浮在(手机)页面底部的实现方法
May 02 Javascript
JavaScript中Object值合并方法详解
Dec 22 Javascript
微信小程序支付前端源码
Aug 29 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
html5 录制mp3音频支持采样率和比特率设置
Jul 15 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程序猿都应该拜读的书
2014/12/31 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
js自带函数备忘 数组
2006/12/29 Javascript
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
Python实现时钟显示效果思路详解
2018/04/11 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
Python语法分析之字符串格式化
2019/06/13 Python
python列表推导式入门学习解析
2019/12/02 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
诚信考试承诺书
2014/03/27 职场文书
消防安全承诺书
2014/05/22 职场文书
爱护花草树木的标语
2014/06/11 职场文书
住房租房协议书
2014/08/20 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
2015大学迎新标语
2015/07/16 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Python办公自动化之Excel(中)
2021/05/24 Python