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制作的幻灯片图集效果打包下载
Feb 12 Javascript
密码框显示提示文字jquery示例
Aug 29 Javascript
JS去掉第一个字符和最后一个字符的实现代码
Feb 20 Javascript
开发中可能会用到的jQuery小技巧
Mar 07 Javascript
jquery获取css的color值返回RGB的方法
Dec 18 Javascript
学习javascript面向对象 理解javascript原型和原型链
Jan 04 Javascript
Javascript的表单验证-初识正则表达式
Mar 18 Javascript
javascript阻止事件冒泡和浏览器的默认行为
Jan 21 Javascript
浅析从vue源码看观察者模式
Jan 29 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
vue-router传参用法详解
Jan 19 Javascript
vue实现分页栏效果
Jun 28 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使用parse_url和parse_str解析URL
2015/02/22 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
javascript 主动派发事件总结
2011/08/09 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
学习python (2)
2006/10/31 Python
详解Python迭代和迭代器
2016/03/28 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
python3转换code128条形码的方法
2019/04/17 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
python验证码图片处理(二值化)
2019/11/01 Python
python连接mongodb集群方法详解
2020/02/13 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
2019大学生暑期实习心得总结
2019/08/21 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis