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 相关文章推荐
js window.event对象详尽解析
Feb 17 Javascript
基于jQuery实现表单提交验证
Nov 24 Javascript
jQuery中:last-child选择器用法实例
Dec 31 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
May 17 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
Dec 01 Javascript
JQuery实现图片轮播效果
May 08 jQuery
深入理解vuex2.0 之 modules
Nov 20 Javascript
浅析node.js的模块加载机制
May 25 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
Aug 14 Javascript
Vue框架下引入ActiveX控件的问题解决
Mar 25 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
Apr 09 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
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
php微信公众平台开发类实例
2015/04/01 PHP
8个PHP数组面试题
2015/06/23 PHP
php制作简单模版引擎
2016/04/07 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
Python中return函数返回值实例用法
2020/11/19 Python
python中time tzset()函数实例用法
2021/02/18 Python
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
九年级化学教学反思
2014/01/28 职场文书
道德之星事迹材料
2014/05/03 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
平面设计师岗位职责
2014/09/18 职场文书
小学生毕业评语
2014/12/26 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
导游词之上海豫园
2019/10/24 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript