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 相关文章推荐
jquery.ui.progressbar 中文文档
Nov 26 Javascript
jQuery的强大选择器小结
Dec 27 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
JavaScript控制网页层收起和展开效果的方法
Apr 15 Javascript
VueJS如何引入css或者less文件的一些坑
Apr 25 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
Vue列表渲染的示例代码
Nov 01 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 Javascript
比较node.js和Deno
Apr 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
PHP源代码数组统计count分析
2011/08/02 PHP
深入php处理整数函数的详解
2013/06/09 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
Vue简单实现原理详解
2020/05/07 Javascript
详解Python中的join()函数的用法
2015/04/07 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
Django 视图层(view)的使用
2018/11/09 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
pycharm新建一个python工程步骤
2019/07/16 Python
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
会计自荐书
2013/12/02 职场文书
酒店司机岗位职责
2013/12/14 职场文书
领班岗位职责范文
2014/02/06 职场文书
大学生标准自荐书
2014/06/15 职场文书
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫