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 复制数组实现代码
Nov 26 Javascript
Js 随机数产生6位数字
May 13 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
vue2单元测试环境搭建
May 24 Javascript
vue页面切换过渡transition效果
Oct 08 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
Apr 30 Javascript
Node.js开发之套接字(socket)编程入门示例
Nov 05 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
Nov 11 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 Javascript
详解Vue数据驱动原理
Nov 17 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
杏林同学录(三)
2006/10/09 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
javascript冒泡排序小结
2016/04/10 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
python ubplot使用方法解析
2020/01/10 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
大学团支书的自我评价分享
2013/12/14 职场文书
高三体育教学反思
2014/01/29 职场文书
《太阳》教学反思
2014/02/21 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
本溪关门山导游词
2015/02/09 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
Python图像处理之图像拼接
2021/04/28 Python