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定时器设定时间执行动作
Apr 02 Javascript
javascript来定义类的规范小结
Nov 19 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
Jan 31 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
jQuery中extend函数的实现原理详解
Feb 03 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
react以create-react-app为基础创建项目
Mar 14 Javascript
基于layui实现高级搜索(筛选)功能
Jul 26 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
js实现打字小游戏
2019/12/17 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[00:03]DOTA2新版本PA至宝展示
2014/11/19 DOTA
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
python如何实现一个刷网页小程序
2018/11/27 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
最新计算机专业自荐信
2013/10/16 职场文书
八年级美术教学反思
2014/02/02 职场文书
合作协议书范本
2014/04/17 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2015小学师德工作总结
2015/07/21 职场文书
《司马光》教学反思
2016/02/22 职场文书