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 相关文章推荐
浅谈javascript中的作用域
Apr 07 Javascript
jQuery文本框(input textare)事件绑定方法教程
Apr 24 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
显示今天的日期js代码(阳历和农历)
Sep 30 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
chrome调试javascript详解
Oct 21 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
Mar 10 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
May 04 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
JavaScript适配器模式原理与用法实例详解
Mar 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
我的论坛源代码(八)
2006/10/09 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
js Calender控件使用详解
2015/01/05 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
python实现360的字符显示界面
2014/02/21 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
python修改操作系统时间的方法
2015/05/18 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
深入解析神经网络从原理到实现
2019/07/26 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
python异步Web框架sanic的实现
2020/04/27 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
一些.net面试题
2014/10/06 面试题
《花的勇气》教后反思
2014/02/12 职场文书
车辆转让协议书
2014/04/15 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
离婚协议书范文2015
2015/01/26 职场文书
协议书范文
2015/01/27 职场文书