web前端全系列 教程
1839个小节阅读:2242.9k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
无论是apply、call还是bind其实都是改变this的指向,我们先来看一个例子
xxxxxxxxxx
var obj = {
name:"小张",
getName:function(){
console.log(this.name)
}
}
obj.getName(); // 小张
下面我们来看一下通过他们来改变this指向
xxxxxxxxxx
var obj = {
name:"小张",
getName:function(){
console.log(this.name)
}
}
var newObj = {
name:'小王'
}
obj.getName.call(newObj); // 小王
obj.getName.apply(newObj); // 小王
obj.getName.bind(newObj)(); // 小王
由此得出结论,bind 返回的是一个新的函数,你必须调用它才会被执行
我们再来看一下apply和call的区别
xxxxxxxxxx
var obj = {
name:"小张",
getName:function(city){
console.log(this.name,city)
}
}
var newObj = {
name:'小王'
}
obj.getName.call(newObj,'北京');
obj.getName.apply(newObj,['上海']);
obj.getName.bind(newObj,'深圳')();
第一个参数:this的指向,第二个参数为方法传递参数
常见应用场景
xxxxxxxxxx
var arr = [10,20,30]
Math.max.apply(null,arr) // 30
var arr = [10,20,30]
Math.max.call(null,...arr)
null代表指向window对象,这里是因为Array本身时候window对象的子元素
实时效果反馈
1. 下列代码关于call改变this关键字,输入结果是什么:
xxxxxxxxxx
var name = "itbaizhan"
var obj = {
name: "小张",
getName: function () {
console.log(this.name)
}
}
var newObj = {
name: '小王'
}
obj.getName.call(window);
obj.getName.call(newObj);
A itbaizhan 小张
B itbaizhan 小王
C 小张 小王
D 小王 小王
答案
1=>B
cookie
有什么作用