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遍历table表格中的某行某列并打印其值
Jul 08 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
纯JS代码实现气泡效果
May 04 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
Dec 08 Javascript
Angular的$http与$location
Dec 26 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 Javascript
Vue插值、表达式、分隔符、指令知识小结
Oct 12 Javascript
微信小程序左滑删除实现代码实例
Sep 16 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 Javascript
如何利用node转发请求详解
Sep 17 Javascript
vue首次渲染全过程
Apr 21 Vue.js
vue选项卡切换的实现案例
Apr 11 Vue.js
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查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
golang与PHP输出excel示例
2016/07/22 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
小程序新版订阅消息模板消息
2019/12/31 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
python3 配置logging日志类的操作
2020/04/08 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
电气专业应届生求职信
2013/11/01 职场文书
软件项目实施计划书
2014/05/02 职场文书
法律顾问服务方案
2014/05/15 职场文书
公民代理授权委托书
2014/09/24 职场文书
党的作风建设心得体会
2014/10/22 职场文书
执行力心得体会范文
2016/01/11 职场文书
《确定位置》教学反思
2016/02/18 职场文书
导游词之无锡梅园
2019/11/28 职场文书
python中if和elif的区别介绍
2021/11/07 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android