javascript中万恶的function实例分析


Posted in Javascript onMay 25, 2011

javascript中最有特色而又让你困惑的function算一个了
下面看一下常用操作

function doit(){ 
  ..... 
} 
  doit();

javascript中的函数我们可以把它当作方法使用
var obj=new Object(); 

obj.say=function(){ 
  ..... 

} 

obj.say();

而function实际上就是对象(即Function类型的实例)
function result(num1, num2) { 
return num1 + num2; 
}

var result = new Function("num1", "num2", "return num1+num2");
以上执行效果是一样的,同时function result还可以这样写(即函数表达式)

var result=function(num1,num2){ 
return num1+num2; 
}

这俩种写法的唯一区别是function是优先执行,而函数表达式是代码执行到才执行,另外每个函数内部都有一个类似数组的arguments对象
函数执行动态参数,即
function result(){ 
return arguments[0]+arguments[1]; 
} 
result(1,2);

arguments在动态传递参数方面经常使用
既然说function是对象,那么它应该也具体属性
function person(){ 
.... 
} 
person.name="xxxx"; 
person.say=function(){ 
alert(this.name); 
} 
person.say(); //alert("xxxx")

我们还可以把它当成类,而函数体相当于构造函数
function Person(nm){ 
this.name=nm; 
this.say=function(){ 
alert(nm); 
alert(this.name); 
} 
} 
var p1=new Person("ygm1"); 
p1.say(); //alert ygm1 ygm1 
var p2=new Person("ygm2"); 
p2.say(); //alert ygm2 ygm2

注意这里要用this.name 因为this代表的是当前对象,如果直接alert(name) 求的是window对象的属性,同时传进来的参数nm在方法say中可以直接用,其实这涉及到作用域链,每个function体就是一个作用域,子域可以访问到父域的属性,而反过来却不行(其实也是可以取到的,设计到闭包一些知识,这里不做详解..)
与其他一些OO语言相比,每个类都可以有一些静态属性或方法,而javascript通过原型来模拟以达到每个对象共享其属性
function Person(num) { 
..... 
} 
Person.prototype.name = "ygm"; 
alert(new Person().name);

但OO语言的静态方法都是由类去调用,不能实例化本身的,javascript中由于其特殊性恰好相反
注意这里alertPerson的name属性,如果函数体内没有查找到name则会到原型中去找,如果查找到则会屏蔽原型中的name直接返回其值
其实每创建一个function的同时也创建了一个原型对象,而原型对象引用自object,所以object是所有对象的基类
我们可以重写原型对象
Person.prototype=new ParentPerson();
Person的原型对象指向ParentPerson对象,而ParentPerson对象又指向自己的原型对象...,也就形成了原型链...
好了 今天就写到这里...
Javascript 相关文章推荐
JavaScript TO HTML 转换
Jun 26 Javascript
Javascript 不能释放内存.
Sep 07 Javascript
Array对象方法参考
Oct 03 Javascript
JavaScript中的isXX系列是否继续使用的分析
Apr 16 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
Javascript Memoizer浅析
Oct 16 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
Bootstrap 模态框(Modal)插件代码解析
Dec 21 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
Feb 02 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 Javascript
js 页面关闭前的出现提示的实现代码
May 25 #Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 #Javascript
IE6/7/8/9不支持exec的简写方式
May 25 #Javascript
25个优雅的jQuery Tooltip插件推荐
May 25 #Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 #Javascript
javascript中String类的subString()方法和slice()方法
May 24 #Javascript
js中关于String对象的replace使用详解
May 24 #Javascript
You might like
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
PHP CodeBase:将时间显示为"刚刚""n分钟/小时前"的方法详解
2013/06/06 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
php制作文本式留言板
2015/03/18 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python os模块学习笔记
2015/06/21 Python
django框架自定义用户表操作示例
2018/08/07 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
SQL面试题
2013/04/30 面试题
linux系统都有哪些运行级别
2012/04/15 面试题
工商管理本科毕业生求职信范文
2013/10/05 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
大学生就业协议书范本(适用于公司企业)
2014/10/07 职场文书
法人代表证明书范本
2015/06/18 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书