关闭

js函数调用的四种方法

标签: js函数调用
328人阅读 评论(0) 收藏 举报
分类:

转自:http://www.cnblogs.com/leejersey/p/3663278.html#undefined 谢谢分享

js的函数调用会免费奉送两个而外的参数就是 this 和 arguments 。arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度。

书上有说4中调用方式:

  • 方法调用模式
  • 函数调用模式
  • 构造器调用模式
  • apply调用模式

下面我们来看看一些实例更好理解。

1:方法调用模式。

请注意this此时指向myobject。

/*方法调用模式*/
    var myobject={
            value:0,
            inc:function(){
                    alert(this.value)
                }
        }
    myobject.inc()

 

2:函数调用模式

请注意this此时指向window

/*函数调用模式*/
    
    var add=function(a,b){
        alert(this)//this被绑顶到window
            return a+b;
        }
    var sum=add(3,4);
    alert(sum)

 

3:构造器调用模式

javascript语言精粹一书建议摒弃这中方式。因为有更好的方式。这里先不介绍。下次发表博文的时候贴出来。

会在这里加一个连接。

/*构造器调用模式  摒弃*/
    
    var quo=function(string){
            this.status=string;
        }
    quo.prototype.get_status=function(){
            return this.status;
        }
    var qq=new quo("aaa");
    alert(qq.get_status());

 

4:apply调用模式

==我们可以来看一个更有用的apply实例。看最下面的代码。

 

/*apply*/
    //注意使用了上面的sum函数
    //与myobject
    //这中调用方式的优点在于可以指向this指向的对象。
    //apply的第一个参数就是this指针要指向的对象
    var arr=[10,20];
    var sum=add.apply(myobject,arr);
    alert(sum);

 

看这个apply真正应用。bind这是一个绑定时间的函数

var bind=function(object,type,fn){
            if(object.attachEvent){//IE浏览器
                    object.attachEvent("on"+type,(function(){
                                                           return function(event){
                                                               window.event.cancelBubble=true;//停止时间冒泡
                                                               object.attachEvent=[fn.apply(object)];//----这里我要讲的是这里
                                                               //在IE里用attachEvent添加一个时间绑定以后。
                                                               //this的指向不是到object对象本身所以。我们绑定的function里的this.id是无法正常工作的。
                                                               //但是如果我们用fn.apply(object)
                                                               //这里可以看出我们是把apply的第一个对象也就是this的指向变更给了object所以this.id就变成了
                                                               //object.id 可以正常工作了。
                                                               
                                                               }
                                                           })(object),false);
                }else if(object.addEventListener){//其他浏览器
                        object.addEventListener(type,function(event){
                                                              event.stopPropagation();//停止时间冒泡
                                                              fn.apply(this)
                                                              });
                    }
            
        }
    bind(document.getElementById("aaa"),"click",function(){alert(this.id)}); 



0
0
查看评论

深入理解JavaScript系列(一): 函数的四种调用模式

1.四种调用模式 1.方法调用模式 当一个函数被保存为对象的一个属性时,我们称之为一个方法。当一个方法被调用时,this被绑定到该对象。 function A() { this.x = 1; //定义a.x this.b = function () { //定...
  • u012422829
  • u012422829
  • 2016-03-24 22:27
  • 1522

JS函数调用的四种方法

在javascript中一共有四种调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。 这些模式在如何初始化关键参数this上存在差异。 1、方法调用模式: var myobject={ value:2, inc:function(num){...
  • longeremmy
  • longeremmy
  • 2013-09-23 15:12
  • 727

JS 四种函数调用模式

Js代码            "UTF-8">   JS 四种函数调用模式       ...
  • linkedin_38250634
  • linkedin_38250634
  • 2017-04-10 10:02
  • 88

6- js 函数的四种调用方式

6. 函数的四种调用方式函数有下列调用模式 函数调用模式 方法调用模式 构造器模式 上下文模式 1. 函数调用 模式要调用,就肯定要先定义,函数的定义方式: 声明式: function fuc() {} 表达式式: var func = function() {}; Function:...
  • qq_16415157
  • qq_16415157
  • 2016-11-04 13:41
  • 3453

JS绑定事件的三种方式

一. xhtml 绑定方式<input type="button" onclick="test();"/><input type="button" onclick="若干句JS代码 "/>二. ...
  • qq_24082497
  • qq_24082497
  • 2016-07-17 10:56
  • 1110

js函数调用的四种模式

1:方法调用模式 var myObj = {//对象字面量     param1: 1,     param2: 2,     sum: function (){ //this关键...
  • stronglyh
  • stronglyh
  • 2015-05-20 15:54
  • 408

js函数调用的四种方式

转自这里…… 在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用。函数有四种调用模式,分别是:函数调用形式、方法调用形式、构造器形式、以及apply形式。这里所有的调用模式中,最主要的区别在于关键字 thi...
  • yingzizizizizizzz
  • yingzizizizizizzz
  • 2017-06-06 21:17
  • 392

java中实现四舍五入的4种方法

public static void main(String[] args) { // 实现四舍五入 double d=4.015; //d=7.485; //方法一 DecimalFormat df=new DecimalFormat("#.00&q...
  • css_styles
  • css_styles
  • 2016-02-15 16:26
  • 237

函数调用模式4种方式详解

函数调用模式: 函数模式特征:就是一个简单的函数调用,函数名前面没有任何的引导内容function foo(){} var func = function(){}foo(); f...
  • u013217071
  • u013217071
  • 2017-03-15 22:17
  • 365

JavaScript四种函数调用方式

JavaScript四种函数调用方式
  • woaijianjiandandande
  • woaijianjiandandande
  • 2016-10-19 12:21
  • 1323
    个人资料
    • 访问:192421次
    • 积分:2748
    • 等级:
    • 排名:第15526名
    • 原创:69篇
    • 转载:151篇
    • 译文:0篇
    • 评论:6条
    最新评论