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 写类方式之六
Jul 05 Javascript
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
详解参数传递四种形式
Jul 21 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
May 31 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
Vue中的混入的使用(vue mixins)
Jun 01 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
Aug 31 Javascript
ES6基础之数组和对象的拓展实例详解
Aug 22 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 Javascript
JavaScript实现外溢动态爱心的效果的示例代码
Mar 21 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 动态多文件上传
2009/01/18 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
php数组转成json格式的方法
2015/03/09 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
Vue实现简单分页器
2018/12/29 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
Python的函数嵌套的使用方法
2014/01/24 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
初中生学习生活的自我评价
2013/11/20 职场文书
股权收购意向书
2014/04/01 职场文书
新农村建设标语
2014/06/24 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
门面房租房协议书
2014/12/01 职场文书
2014年统战工作总结
2014/12/09 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
Python基于百度AI实现抓取表情包
2021/06/27 Python
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs