前言
今年开始面试,但是效果不尽人意,对知识点掌握的杂七杂八没有规律,所以开始写文章记录、总结技术。一步一步做大做强!
apply
定义
fn.apply(this1[,arr])
调用函数fn,并将fn中的this指向this1,也可以传递参数,参数形式为数组
栗子
var obj1 = {
name : '二宝'
}
var obj = {
name : '你好',
getName : function(data,data1){
console.log(this===obj1,arguments)
}
}
obj.getName.apply(obj1,[1,2]) //true,[1,2] 将obj的this指向obj1
call
定义
fn.call(this1[,a1,a2,a3])
调用函数fn,并将fn中的this指向this1,也可以传递参数,参数形式为单个传递依次排列对应
栗子
var obj1 = {
name : '二宝'
}
var obj = {
name : '你好',
getName : function(data,data1){
console.log(this,this===obj1,arguments)
}
}
obj.getName.call(obj1,1,2) //obj1,true,[1,2] 将obj的this指向obj1
bind
定义
fn.bind(this1)()
创建一个前缀函数的实例(fn),将参数变为后续bind内的内容(this1),所以需要另外调用实例
栗子
var parent = {
name : '大宝',
getName : function(){
console.log(this.name)
}
}
var daughter = {
name : '二宝'
}
parent.getName.bind(daughter)(); //需要再次执行实例 this变为daughter