函数的一些方法

call()
调用一个对象的一个方法,另一个对象替换当前对象。
call 方法可以用来代替另一个对象调用一个方法。

    function add(a,b)  
    {  
        console.log(a+b);  
    }  
    function sub(a,b)  
    {  
        console.log(a-b);  
    }  
      
    add.call(sub,3,1);  

 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为   4

 call:和apply的意思一样,只不过是参数列表不一样. apply(o[1,2])   call(o,1,2)

f.calll(o);

f.apply(o);

 Function.call(obj,[param1[,param2[,…[,paramN]]]])
obj:这个对象将代替Function类里this对象
params:这个是一个参数列表

function Person(name,age)  
    {  
        this.name=name;  
        this.age=age;  
    }  
    /*定义一个学生类*/  
    function Student(name,age,grade)  
    {  
        Person.apply(this,arguments);  
        this.grade=grade;  
    }  
    //创建一个学生类  
    var student=new Student("zhangsan",21,"一年级");  
    //测试  
    console.log("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);  
    /输出结果name:zhangsan age:21  grade:一年级  
    //学生类里没有给name和age属性赋值

bind

方法主要作用是将函数绑定某个对象

function f(y) {return this.x+y}   //待绑定的函数
var o={x:1}    //将要绑定的对象
var g=f.bind(o)     //通过调用g(x)调用o.f(x)
console.log(g(2))    // 3

 ECMAScript 5中的bind方法不仅仅是将函数绑定到对象 还附带一些其他的应用 除了第一个实参

 传入bind的实参也会绑定至this 是一种常见的函数式编程技术   又是被称为柯里化

 

function f(y,z){return this.x+y+z}   //另外一个做累加计算的函数
var g = f.bind({x:1},2)      //绑定this和y
console.log(g(3) )      //6 this.x绑定到1 y绑定到2 z绑定到3

 

猜你喜欢

转载自gaofan0528.iteye.com/blog/2369731