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 相关文章推荐
TopList标签和JavaScript结合两例
Aug 12 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
Jun 11 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
Sep 16 Javascript
浅谈jquery页面初始化的4种方式
Nov 27 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
JS实现简单的星期格式转换功能示例
Jul 23 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
Apr 28 Javascript
支付宝小程序实现省市区三级联动
Jun 21 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原创论坛
2006/10/09 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JS继承用法实例分析
2015/02/05 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
python实现dict版图遍历示例
2014/02/19 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
一些PHP的面试题
2015/05/06 面试题
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
CSS的calc函数用法小结
2022/06/25 HTML / CSS
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers