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监听浏览器的问题
Jun 23 Javascript
JS window对象的top、parent、opener含义介绍
Dec 03 Javascript
js使用html()或text()方法获取设置p标签的显示的值
Aug 01 Javascript
javascript批量修改文件编码格式的方法
Jan 27 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
javascript基础知识讲解
Jan 11 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 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指定函数参数默认值示例代码
2013/12/04 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
javascript 面向对象继承
2009/11/26 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python实现截屏的函数
2015/07/26 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
求职自荐信格式
2013/12/04 职场文书
行政总经理岗位职责
2013/12/05 职场文书
学生手册家长评语
2014/02/10 职场文书
产品售后服务承诺书
2014/05/21 职场文书
本科生求职信
2014/06/17 职场文书
安全教育片观后感
2015/06/17 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python