网站首页 > 技术文章 正文
前端面试题:箭头函数的this指向哪??
解析:箭头函数不同于传统JavaScript中的函数,箭头函数并没有属于??的this,它的所谓的this是捕获其所在上下?的 this值,作为??的 this 值,并且由于没有属于??的this,?箭头函数是不会被new调?的,这个所谓的this也不会被改变.
我们可以?Babel理解?下箭头函数:
// ES6
const obj = {
getArrow() {
return () =>
{ console.log(this ===
obj);
};
}
}
转化后
// ES5,由 Babel 转译
var obj = {
getArrow: function getArrow()
{ var _this = this;
return function ()
{ console.log(_this === obj);
};
}
};
前端面试题:谈?谈你对this的了解?
解析:this的指向不是在编写时确定的,?是在执?时确定的,同时,this不同的指向在于遵循了?定的规则。
?先,在默认情况下,this是指向全局对象的,?如在浏览器就是指向window。
name = "Bale";
function sayName ()
{ console.log(this.name
);
};
sayName(); //"Bale"
其次,如果函数被调?的位置存在上下?对象时,那么函数是被隐式绑定的。
function f() {
console.log( this.name );
}
var obj = {
name: "Messi",
f: f
};
obj.f(); //被调?的位置恰好被对象obj拥有,因此结果是Messi
再次,显示改变this指向,常?的?法就是call、apply、bind
function f() {
console.log( this.name );
}
var obj = {
name: "Messi",
};
var obj1 = {
name: "Bale"
};
f.bind(obj)(); //Messi ,由于bind将obj绑定到f函数上后返回?个新函数,因此需要再在后?加上括号进?执?,这是bind与apply和call的区别
以bind为例:
最后,也是优先级最?的绑定 new 绑定。
? new 调??个构造函数,会创建?个新对象, 在创造这个新对象的过程中,新对象会?动绑定到Person对象的this上,那么 this ?然就指向这个新对象。
function Person(name)
{ this.name = name;
console.log(name);
}
var person1 = new Person('Messi'); //Messi
绑定优先级: new绑定 > 显式绑定 >隐式绑定 >默认绑定
以上就是酷仔今天整理提供的Web前端开发面试题,希望为Web前端同学提供了有用的面试素材,以后酷仔每日均会提供Python及Web相关的习题。
猜你喜欢
- 2025-05-21 悠然晨光!一道 CSS 面试题,开启技术提升宁静时刻
- 2025-05-21 经典web开发工程师面试题
- 2025-05-21 web 自动化岗位常见面试题
- 2025-05-21 惬意清晨!一道 CSS 面试题,助你轻松掌握实用技巧
- 2024-09-22 2020Web前端程序员常见面试题及答案
- 2024-09-22 好程序员web前端教程分享HTML/CSS部分常见面试题
- 2024-09-22 2020Web前端开发常见面试题及答案-Web前端面试
- 2024-09-22 Web前端|有备而来,收下这拨面试题
- 2024-09-22 2020Web前端常见面试题及答案
- 2024-09-22 Web前端面试问什么?2020Web前端常见面试题及答案
你 发表评论:
欢迎- 05-23浅谈3种css技巧——两端对齐
- 05-23JSONP安全攻防技术
- 05-23html5学得好不好,看掌握多少标签
- 05-23Chrome 调试时行号错乱
- 05-23本文帮你在Unix上玩转C语言
- 05-23Go 中的安全编码 - 输入验证
- 05-2331个必备的python字符串方法,建议收藏
- 05-23Dynamics.js – 创建逼真的物理动画的 JS 库
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)