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 相关文章推荐
关于使用 jBox 对话框的提交不能弹出问题解决方法
Nov 07 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
Jul 17 Javascript
简介JavaScript中的sub()方法的使用
Jun 08 Javascript
Angularjs过滤器使用详解
May 25 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
基于JavaScript实现滑动门效果
Mar 16 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
Dec 15 Javascript
Vue下的国际化处理方法
Dec 18 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 Javascript
js实现简单抽奖功能
Nov 24 Javascript
vue实现放大镜效果
Sep 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
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
php验证码生成器
2017/05/24 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
Javascript实现关闭广告效果
2021/01/29 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
详解python logging日志传输
2020/07/01 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
酒店人事专员岗位职责
2013/12/19 职场文书
介绍信怎么写
2015/01/30 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
详解非极大值抑制算法之Python实现
2021/06/28 Python