2-1 将函数中的this固定为调用bind方法时的第一个参数
function fn(){ return this }
var bindFn = fn.bind({name:“绑定函数”}) //ƒ fn(){ return this }
3-1 以后无论由哪个对象调用绑定函数,绑定函数中的this依然是{name:“绑定函数”}
function fn(){ console.log(this) }
var bindFn = fn.bind({name:“绑定函数”})
bindFn() //等同于window对象调用 , this依然指向{name:“绑定函数”}
var obj = {name:“obj”};
obj.fn = bindFn;
obj.fn() //由普通对象调用 ,this依然指向{name:“绑定函数”}
var arr = [bindFn];
arr0 //由数组调用 , this依然指向{name:“绑定函数”}
setTimeout(bindFn , 200); //作为回调函数 , this依然指向{name:“绑定函数”}
clearTimeout(1);
4-1 如果绑定函数作为构造函数,已经捆绑的this会被忽略掉,this依然指向实例对象
function Person(name){
this.name = name;
}
var bindPerson = Person.bind({name:“绑定函数”})
new bindPerson(“张三”) // Person {name: “张三”}
5-1 预设参数
function fn(a,b,c,d){
console.log(a,b,c,d) // 1 ,2 ,3 ,4
}
var bindFn = fn.bind({name:“绑定函数”} , 1 ,2); // 拷贝原函数时的第2个参数开始往后称为预设参数
bindFn(3,4); //调用绑定函数时的第一参数则排在预设参数的后面
6-1 当没有参数、第一个参数为undefined、第一个参数为null时
var obj = {
fnOne:function(){ return this }.bind(),
fnTwo:function(){ return this }.bind( undefined ),
fnThree:function(){ return this }.bind( null )
}
//注意:这三种情况是使this指向window对象,而不是不去改变this指向,所以这里的this还是不会指向obj
obj.fnOne() // window
obj.fnTwo() //window
obj.fnThree() //window
特点:
1.返回值取决于目标函数的返回值
2.用call的第一个参数对象来代替调用目标函数的对象,以此来改变目标函数体内的this指向
3.调用call方法时的第二个参数做为目标函数的第一个参数,将第二个作为第三个以此类推
作用:
1.用于继承,例如子构造函数继承父构造函数
2.改变绑定函数运行时的this指针。
1-1 返回值取决于目标函数的返回值
function fn(){ return {name:“call”} }
fn.call() // {name: “call”}
2-1 改变目标函数体内的this指向 , 相当于使用第一个参数对象调用
function fn(){ return this }
fn.call( { name : “call” } ) // {name: “call”}
3-1 参数位置
function fn(a, b, c){ return arguments }
fn.call( { name : “call” } , 1 , 2 , 3 ) //Arguments [1, 2, 3]
1-2 用于继承
function parent(name, age) {
this.name = name;
this.age= age;
}
function child(name, age) {
parent.call(this, name, age);
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!