js function无名函数详解

js function无名函数详解

函数对象 Function Object

函数就是对象。对象字面量产生的对象链接到Object.prototype。函数对象链接到Function.prototype。每个函数在创建时附有两个附件的隐藏属性:函数的上下文和实现函数行为的代码。

函数字面量 Function Literal

函数对象可以通过函数字面量来创建。

var add = function(a, b){return a+b;};

调用 Invocation

除了声明时定义的形式参数,每个函数接收两个附加的参数:this 和arguments。

this在面向对象编程中非常重要,它的值取决于调用的模式。在JS中,一共有四种调用模式,这些模式在初始化参数this上存在差异。

1、方法调用模式

2、函数调用模式

3、构造器调用模式

4、apply调用模式

方法调用模式 The Mehtod Invocation Pattern

当一个函数被保存为一个对象的属性并且被调用时,this绑定到该对象。

通过this可取得他们所属对象的上下文的方法称为公共方法。

var myObject = {    value : 0,    increment:function(inc)    {           this.value += (inc);    }};myObject.increment(3);myObject.increment(3);alert(myObject.value);//result is 6.

函数调用模式 The Function Invocation Pattern

在函数调用模式下,this被绑定到全局对象上。这个是网页特效语言设计上的一个错误。

看如下code:

var g='globle';var o=function(){ var g= 'self';alert(this.g);}();//result is 'globle'. it is not correct.

可以采用以下方法避免

var g='globle';var o=function(){ var that = this;that.g='self';alert(this.g);}();//result is 'self', it is correct.

构造器调用模式 The Consultant Invocation Pattern

js是居于原型继承的语言,所以对象可以从其他对象直接继承属性。该语言是无类别的。

如果一个函数前面带上new来调用,那么将创建一个隐藏链接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上。

不推荐使用这种方法。

var Quo=function(string){this.status =string;};Quo.prototype.get_status = function(){return this.status;};var myQuo = new Quo("Confused");alert(myQuo.get_status());//new could not be lost.

Apply调用模式 The Apply Invocation Pattern

通过apply/call方法调用函数,其中第一个参数为我们指定的this的值。

var  statusObject = {status : 'A-OK'};var status = Quo.prototype.get_status.apply(statusObject);  //result is 'A-OK';the first param is "this" value.

时间: 2024-08-29 06:36:50

js function无名函数详解的相关文章

js正则表达式常用函数详解(续)_正则表达式

正则表达式对象的方法 1.test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式.如果存在则返回 true,否则就返回 false. 2.exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组. 3.compile,把正则表达式编译为内部格式,从而执行得更快.正则表达式对象的属性 1.source,返回正则表达式模式的文本的复本.只读. 2.lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置. 3.input ($_),返回执

js正则表达式常用函数详解(续)

正则表达式对象的方法 1.test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式.如果存在则返回 true,否则就返回 false. 2.exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组. 3.compile,把正则表达式编译为内部格式,从而执行得更快. 正则表达式对象的属性 1.source,返回正则表达式模式的文本的复本.只读. 2.lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置. 3.input ($_),返回

js正则表达式常用函数详解_正则表达式

一.js正则表达式之replace函数用法: 函数功能:replace函数返回根据正则表达式进行文字替换后的字符串的复制. 函数格式:stringObj.replace(rgExp, replaceText) 参数:字符串stringObj,rgExp正则表达式,replaceText所替换的内容 本模块涉及的内容包括字符串创建,正则表达式隐式创建对象,创建正则表达式,进行replace方法的使用匹配 示例代码: <html> <script language="javascr

js运动事件函数详解_javascript技巧

本文实例为大家分享了js运动事件函数,供大家参考,具体内容如下 HTML <div id="breedsdog"> <h2 class="title">The Dog</h2> <p class="describe">Split between cat,belong to the cat family,cat,cat,is the world's more widely<br> in t

js的回调函数详解_javascript技巧

现在做native App  和Web App是主流,也就是说现在各种基于浏览器的web app框架也会越来越火爆了,做js的也越来越有前途.我也决定从后端开发渐渐向前端开发和手机端开发靠拢,废话不说了,我们来切入正题"js的回调函数"相关的东西.       说起回调函数,好多人虽然知道意思,但是还是一知半解.至于怎么用,还是有点糊涂.网上的一些相关的也没有详细的说一下是怎么回事,说的比较片面.下面我只是说说个人的一点理解,大牛勿喷.我们来看一下一个粗略的一个定义"函数a有

js正则表达式常用函数详解

一.js正则表达式之replace函数用法: 函数功能:replace函数返回根据正则表达式进行文字替换后的字符串的复制. 函数格式:stringObj.replace(rgExp, replaceText) 参数:字符串stringObj,rgExp正则表达式,replaceText所替换的内容 本模块涉及的内容包括字符串创建,正则表达式隐式创建对象,创建正则表达式,进行replace方法的使用匹配 示例代码: <html> <script language="javascr

几个常用的JS时间处理函数详解

 代码如下 复制代码   /************************************************************************************* * JS时间戳转正常时间 * 输入1317222397这样的10位时间戳 * 输出2012年 4月13日 9:09,这个格式是根据使用者本地电脑时间格式决定的 * 如果想输出2012-4-13 9:09这种格式,后面用.replace(/年|月/g, "-").replace(/日/g,

SQL Function 自定义函数详解_MsSql

目录 产生背景(已经有了存储过程,为什么还要使用自定义函数) 发展历史 构成 使用方法 适用范围 注意事项 疑问 内容 产生背景(已经有了存储过程,为什么还要使用自定义函数) 与存储过程的区别(存在的意义): 1.     能够在select等SQL语句中直接使用自定义函数,存储过程不行. 2.     自定义函数可以调用其他函数,也可以调用自己(递归) 3.     可以在表列和 CHECK 约束中使用自定义函数来实现特殊列或约束 4.       自定义函数不能有任何副作用.函数副作用是指对

js 字符串长度函数详解介绍

我们只要使用  代码如下 复制代码 var str = "465464656464566"; var strLength = str.length; 例1  代码如下 复制代码 <script type="text/javascript"> var vText="I like www.111cn.net" document.write("<p>" + vText + "</p>&q