JavaScript中apply,call,bind解析

直接贴代码,后解说,编程就是这样,先应用,后理解

var Person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
Person.fullName.call(person1);  // 将返回 "Bill Gates"

要理解上面的3个概念首先要理解this关键字

this 是什么?

JavaScript this 关键词指的是它所属的对象。

它拥有不同的值,具体取决于它的使用位置:

  • 在方法中,this 指的是所有者对象。
  • 单独的情况下,this 指的是全局对象。
  • 在函数中,this 指的是全局对象。
  • 在函数中,严格模式下,this 是 undefined。
  • 在事件中,this 指的是接收事件的元素。

像 call() 和 apply() 这样的方法可以将 this 引用到任何对象。

JavaScript call() 方法

call() 方法是预定义的 JavaScript 方法。

它可以用来调用所有者对象作为参数的方法。

通过 call(),您能够使用属于另一个对象的方法。

也就是this在调用的函数内部不同了,例如上面的例子

 Person.fullName.call(person1);  // 将返回 "Bill Gates"

当调用Person这个类的的fullName方法的call方法传入参数person1,person1这个对象原本是没有fullName这个方法

方法          call apply bind
方法参数 多个  单个数组 多个
方法功能 函数调用改变this指向 函数调用改变this指向 函数调用改变this指向
返回结果 直接执行    直接执行 返回待执行函数
低层实现 通过eval 通过eval 间接调用apply

你可能感兴趣的:(前端知识点汇总,javascript,linq,前端)