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 相关文章推荐
[原创]js获取数组任意个不重复的随机数组元素
Mar 15 Javascript
关于Jquery操作Cookie取值错误的解决方法
Aug 26 Javascript
子页向父页传值示例
Nov 27 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
Jun 23 Javascript
jQuery CSS3自定义美化Checkbox实现代码
May 12 Javascript
js HTML5多媒体影音播放
Oct 17 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
Apr 27 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
详解js加减乘除精确计算
Mar 19 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中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python线程join方法原理解析
2020/02/11 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
综合测评自我鉴定
2013/10/08 职场文书
现金会计岗位职责
2013/12/05 职场文书
会计专业自我评价
2014/02/12 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
总经理人事任命书
2014/06/05 职场文书
教师先进个人材料
2014/12/17 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
python字符串常规操作大全
2021/05/02 Python
教你一步步实现一个简易promise
2021/11/02 Javascript
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫