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 相关文章推荐
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
Jun 02 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
Mar 23 Javascript
vue省市区三联动下拉选择组件的实现
Apr 28 Javascript
在Vue.js中使用Mixins的方法
Sep 12 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 Javascript
vue ssr 实现方式(学习笔记)
Jan 18 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
Vue.js实现可编辑的表格
Dec 11 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实现多图片上传类实例
2014/07/26 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
Js+XML 操作
2006/09/20 Javascript
js 省地市级联选择
2010/02/07 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python 字典与字符串的互转实例
2017/01/13 Python
python交互式图形编程实例(二)
2017/11/17 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
企业节能减排实施方案
2014/03/19 职场文书
理财计划书
2014/08/14 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
微信小程序实现轮播图指示器
2022/06/25 Javascript