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动态调整iframe高度的方法
Mar 06 Javascript
让js弹出窗口居前显示的实现方法
Jul 10 Javascript
JS截取url中问号后面参数的值信息
Apr 29 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
Mar 04 Javascript
深入探秘jquery瀑布流的实现
Jan 30 Javascript
对jQuary选择器的全面总结
Jun 20 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
bootstrap动态调用select下拉框的实例代码
Aug 09 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
Laravel admin实现消息提醒、播放音频功能
Jul 10 Javascript
微信小程序网络请求实现过程解析
Nov 06 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
Feb 06 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 Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
关于全局变量和局部变量的那些事
2013/01/11 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
python解析基于xml格式的日志文件
2017/02/25 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
python实现FTP循环上传文件
2020/03/20 Python
python实现手势识别的示例(入门)
2020/04/15 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
招聘单位介绍信
2014/01/14 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
欠款证明
2015/06/24 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
导游词之山东八大关
2019/12/18 职场文书