网站首页 > 技术文章 正文
前端面试题:箭头函数的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前端常见面试题及答案
你 发表评论:
欢迎- 07-08记oracle日志挖掘实操&查询归档不正常增长情况(一)
- 07-08Oracle 伪列!这些隐藏用法你都知道吗?
- 07-08orcl数据库查询重复数据及删除重复数据方法
- 07-08重大故障!业务核心表被truncate删除,准备跑路……
- 07-08oracle数据恢复—oracle执行truncate命令误删除数据的数据恢复
- 07-08Oracle-rac 修改scanip(oracle 修改sequence cache)
- 07-08ORACLE RAC CDB和PDB切换(oracle数据库rac切换)
- 07-08Oracle rac haip作用(oracle rac的典型特征)
- 596℃几个Oracle空值处理函数 oracle处理null值的函数
- 590℃Oracle分析函数之Lag和Lead()使用
- 577℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 573℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 569℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 562℃【数据统计分析】详解Oracle分组函数之CUBE
- 549℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 542℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- 记oracle日志挖掘实操&查询归档不正常增长情况(一)
- Oracle 伪列!这些隐藏用法你都知道吗?
- orcl数据库查询重复数据及删除重复数据方法
- 重大故障!业务核心表被truncate删除,准备跑路……
- oracle数据恢复—oracle执行truncate命令误删除数据的数据恢复
- Oracle-rac 修改scanip(oracle 修改sequence cache)
- ORACLE RAC CDB和PDB切换(oracle数据库rac切换)
- Oracle rac haip作用(oracle rac的典型特征)
- 新手小白怎么学UI设计 推荐学习路线是什么
- 超实用!0基础UI设计自学指南(0基础学ui设计好就业吗)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)