JS通过函数名调用函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS通过函数名调用函数相关的知识,希望对你有一定的参考价值。

有三个函数
function f1()alert('f1')
function f2()alert('f2')
function f3()alert('f3')

还有一个方法
function execute(functionName) //注:这里functionName传入的是字符串
//。。。

那么通过调用execute('f1');来实现对方法f1的调用。

JS函数调用的四种方法

1:方法调用模式

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

请注意this此时指向myobject


2:函数调用模式

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

请注意this此时指向window


3:构造器调用模式

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

javascript语言精粹一书建议摒弃这种方式


4: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));



参考技术A 调用方式:
方法调用模式
函数调用模式
构造器调用模式
1:方法调用模式。
/*方法调用模式*/
var myobject=
value:0,
inc:function()
alert(this.value)


myobject.inc()

2:函数调用模式
/*函数调用模式*/

var add=function(a,b)
alert(this)//this被绑顶到window
return a+b;

var sum=add(3,4);
alert(sum)

3:构造器调用模式
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*/
var arr=[10,20];
var sum=add.apply(myobject,arr);
alert(sum);
参考技术B eval(functionName+'()');本回答被提问者采纳

关于js中函数的调用问题

js中函数的调用方法

1、直接调用

函数名(参数);

2、通过指向函数的变量去调用

例如:

var myval = 函数名;

此刻 myval是指向函数的一个指针;

myval(实际参数);此刻调用的就是myval指向的那个函数;

关于js中函数返回值的获取

var myval = 函数名();

此刻myval 的值则是函数的返回值,若函数没有有返回值,则myval则被赋予undefine。

以上是关于JS通过函数名调用函数的主要内容,如果未能解决你的问题,请参考以下文章

Js中的函数

关于js中函数的调用问题

js如何通过变量名调用函数

JS函数

js函数

js函数定义和调用