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 04 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
Jun 13 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
js制作支付倒计时页面
Oct 21 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
AugularJS从入门到实践(必看篇)
Jul 10 Javascript
ES6箭头函数和扩展实例分析
May 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之数组学习
2011/05/29 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python中functools模块的常用函数解析
2016/06/30 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
用Python shell简化开发
2018/08/08 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Python连接字符串过程详解
2020/01/06 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
食品安全宣传标语
2014/06/07 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
书法社团活动总结
2015/05/07 职场文书
优质护理心得体会
2016/01/22 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
redis 查看所有的key方式
2021/05/07 Redis
python 离散点图画法的实现
2022/04/01 Python