this,call 和apply

作者: 阿蒙 时间: 2020-2-19 标签: JavaScript 浏览: 1084 评论: 0

一. this 

    this的指向

    1. 作为对象的方法调用: this指向该对象。 

    2. 作为普通函数调用, this指向全局对象,在非严格模式浏览器端指向window,严格模式为undefined

    3. 构造器调用。 this指向构造器返回的对象(如果构造器有显式返回则指向显式返回的对象)

    4.  call, apply 调用。 this指向call,apply中的第一个参数

二. call 和 apply

    1. 区别。call传多个参数。apply传接收一个参数集合。

    2. 作用

        1. 改变this指向

        2. 实现bind   

            

Function.prototype.bind = function () {
  var self = this, // 保存原函数
  context= [].shift.call (arguments),  // 获取需要绑定的this上下文
  args = [].slice.call (arguments); // 剩余参数
  return function () {
     return self.apply( context, [].concat.call ( args, [].slice.call (a arguments 
      )) );
     //  将需要绑定的this上下文作为apply的第一个参数传入
     // 将原参数和新参数组成新的数组传入
 }
}
     3. 借用其他对象的方法。 如 arguments 是类数组,没有数组的方法。 可以借用数组的方法。 [].shift.call (arguments) 可以调用数组的shift方法截取参数集合里面的第一个参数


0

本文相关标签: 设计模式笔记

赞助商

发表评论: