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方法截取参数集合里面的第一个参数
本文相关标签: 设计模式笔记
发表评论: