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 相关文章推荐
jquery实现简单的拖拽效果实例兼容所有主流浏览器
Jun 21 Javascript
不提示直接关闭网页窗口的JS示例代码
Dec 17 Javascript
深入理解Javascript中this的作用域
Aug 12 Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 Javascript
Node.js开发之访问Redis数据库教程
Jan 14 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
js实现拖拽功能
Mar 01 Javascript
node.js的Express服务器基本使用教程
Jan 09 Javascript
layui实现三级联动效果
Jul 26 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 Javascript
vue ssr+koa2构建服务端渲染的示例代码
Mar 23 Javascript
js观察者模式的弹幕案例
Nov 23 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模板,主要想体现一下思路
2006/12/25 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
对教师的评语
2014/04/28 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
单位接收函范文
2015/01/30 职场文书
八年级历史教学反思
2016/02/19 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
解决vue中provide inject的响应式监听
2022/04/19 Vue.js
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle