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 相关文章推荐
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
Nov 07 Javascript
JavaScript 事件的一些重要说明
Oct 25 Javascript
javascript 使用 NodeList需要注意的问题
Mar 04 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
Aug 31 Javascript
javascript Function函数理解与实战
Dec 01 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
Dec 03 Javascript
jQuery实现简单弹幕效果
Nov 28 jQuery
微信小程序开发搜索功能实现(前端+后端+数据库)
Mar 04 Javascript
JS如何生成动态列表
Sep 22 Javascript
Vue看了就会的8个小技巧
Jan 21 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
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 三维饼图的实现代码
2008/09/28 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php实现数据库的增删改查
2017/02/26 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
关于js类的定义
2011/06/28 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
js实现小星星游戏
2020/03/23 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
用python写asp详细讲解
2013/12/16 Python
Python中的ceil()方法使用教程
2015/05/14 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
三维科技面试题
2013/07/27 面试题
校运会口号
2014/06/18 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
校运会宣传稿大全
2015/07/23 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书