this的指向

箭头函数:定义时所在的作用域(tip:继承而来 函数作用域 )

普通函数:指向调用它的对象

箭头函数体内的 this对象,就是定义时所在的对象,而不是使用时所在的对象

1、箭头函数没有自己的thisargumentssupernew.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。

箭头函数的this指向  定义这个函数时所在的作用域(js的作用域就两个,一个函数作用域,一个全局作用域)

var name = 'window';var A = {name: 'A',sayHello: () => {console.log(this.name)}
}
var B = {name: 'B'
}A.sayHello(); // 还是以为输出A ? 错啦,其实输出的是window
A.sayHello.call(B) //输出window
var name = 'window'; var A = {name: 'A',sayHello: function(){var s = () => console.log(this.name)return s//返回箭头函数s}
}var sayHello = A.sayHello();
sayHello();// 输出A var B = {name: 'B';
}sayHello.call(B); //还是A
sayHello.call(); //还是A

2、普通函数this的指向  指向调用它的对象  运行时的this指的是哪个this 那就是哪个 (因为使用call时的第一个参数就是this,所以可以改变运行时指向的this)

var name = 'window'; // 其实是window.name = 'window'var A = {name: 'A',sayHello: function(){console.log(this.name)}
}A.sayHello();// 输出Avar B = {name: 'B'
}A.sayHello.call(B);//输出BA.sayHello.call();//不传参数指向全局window对象,输出window.name也就是window

3、

es6中的箭头函数和普通函数有什么区别?

1、普通函数中的this总是指向调用它的那个对象,箭头函数没有自己的this,他的this永远指向其定义环境,任何方法都改变不了其指向,如call()、bind()、apply()。(正是因为它没有this,所以也就不能用作构造函数,也没有原型对象)箭头函数不能当作构造函数,也就是说,不能使用new命令,否则会报错。
2、箭头函数没有原型属性。
3、箭头函数不可以使用yield命令,因此箭头函数不能用作Generator函数。
4、箭头函数不能使用arguments对象,该对象在函数体内不存在。如果要用,可以用rest参数代替。
5、变量提升:由于js的内存机制,function的级别最高,而用箭头函数定义函数的时候,需要var(let、const)关键字,而var所定义的变量不能得到变量提升。故箭头函数一定要定义于调用之前。

this的指向问题?

1、普通函数中,this指向其函数的直接调用者;
2、箭头函数中,this指向其定义环境,任何方法都改变不了其指向,如call( )、bind()等;
3、构造函数中,如果不使用new,则this指向window, 如果使用new创建了一个实例,则this指向该实例。
4、window 内置函数中,如setInterval,setTimeout等,其内部的this指向Window。
5、匿名函数的this指向Window。
6、apply()、call()、bind()可以改变this的指向

4、例子们:https://www.cnblogs.com/fanzhanxiang/p/8888963.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事关每个程序员的职业规划与履历

今天,甚至过去,大多数人都是由自己来设计他们的职业生涯的。 无论你正要启程,还是已经奋斗多年,以下内容都会对您的职业生涯有所助益。 目录 几条重要的职业规划提示。 1. 学习的步伐不停止 2. 学会问、学会听,学会学习…

程序员应该如何规划自己的人生与书写履历?

今天,甚至过去,大多数人都是由自己来设计他们的职业生涯的。 无论你正要启程,还是已经奋斗多年,以下内容都会对您的职业生涯有所助益。几条重要的职业规划提示。1. 学习的步伐不停止 古人说,活到老,学到老。终身学习应该是您的座右铭。 世界在不断变化,每个人都在寻找各…

浅谈多线程——NSThread

上一篇文章中我们大致了解了GCD的模式和方法,在iOS开发中除了GCD之外,还有NSThread和NSOperation两种多线程方式。 1.NSThread - a - 使用NSThread开辟多线程进行子任务处理:类方法和初始化方法 使用类方法不需要创建对象就可以直接开辟多线程…

2021年程序员可以做哪些副业?

哈喽,大家好,我是孙叫兽,本期内容给大家分享程序员搞副业的一期节目,欢迎大家一起学习。 1.程序员为什么要做副业? 副业意味着自由 时至今日,仍然有一大群程序员还天真地认为从事副业是一种压迫。但事实是&…

学习Apache Camel –实时索引推文

在大多数软件开发项目中,有一点需要使应用程序开始与其他应用程序或第三方组件通信。 无论是发送电子邮件通知,调用外部api,写入文件还是将数据从一个地方迁移到另一个地方,您都可以推出自己的解决方案或利用现有框架。 对于Jav…

【坑】执行Consumer的时候发生java.net.UnknownHostException错误

【时间】: 2016/4/8 17:30 【问题】: kafka执行Consumer实例的时候,发生了一下错误。 kafka配置文件server.properties如下: zookeeper配置文件zoo.cfg内容如下: consumer的实现代码如下: 其中静态类的定义…

如何上架自己的应用到各大应用商店?

大家好,我叫孙叫兽,本期给大家分享的内容是如何上架自己的应用到应用商店,感谢大家的阅读!1.上架各大应用商店需要准备哪些材料?上架各大安卓应用商店(腾讯应用宝、阿里应用商店、百度手机助手、华为应用市…

时间复杂度和空间复杂度[数据结构]

參考:本文为小甲鱼教学视频的学习笔记。 1、为什么要学习时间复杂度和空间复杂度?你说一个算法好另外一个算法不好,有什么推断根据?哪个算法效率高?怎么推断?那么就要学习时间和空间复杂度了。思考&#xf…

js编码解码decodeURI()与decodeURIComponent()的区别

区别: encodeURIComponent()对/?:&$,#进行编码,encodeURI()不会 如果url的query和path传参中含有这些字符会被不正确的截断,拿到的参数会是错误的,一般都会用encodeURIComponent()进行编码、decodeURIComponent进行解码 en…

gitlab将分支代码合并到master上

1、首先在test分支上进行git add .git commit -m "test"git push 2、切换到master上git checkout mastergit merge test git push

堆栈跟踪 堆栈跟踪_过滤日志中无关的堆栈跟踪行

堆栈跟踪 堆栈跟踪我喜欢堆栈痕迹。 不是因为我喜欢错误,而是因为发生错误的那一刻,堆栈跟踪是无价的信息源。 例如,在Web应用程序中,堆栈跟踪向您显示完整的请求处理路径,从HTTP套接字到过滤器,Servlet&am…

VUE使用vue-seamless-scroll自动滚动表格数据,对表格数据排序无效的解决办法

使用vue-seamless-scroll循环表格数据,建议使用v-for,ul li 的形式便于操作属性,elemengt ui table可能不好处理兼容性问题及属性设置,尤其是一个页面添加多个表格及效果。 VUE : 排序 this.$refs.seamlessScroll.reset() 效果图

前端常见的加密算法介绍

一、前言 在信息安全越来越受重视的今天,前端的各种加密也变得更加重要。通常跟服务器的交互中,为保障数据传输的安全性,避免被人抓包篡改数据,除了 https 的应用,还需要对传输数据进行加解密。 目前常见的加密算法可…

一时冲动:“通往瓦尔哈拉之路的冒险”

通过所有有关Java 9和Project Jigsaw的讨论,我们不应忽视Java的另一重大变化。 希望在第10版或第11版中, Valhalla项目能够实现并介绍价值类型和专业化。 那么这是怎么回事,项目进展如何,面临什么挑战? 几天前&#x…

小程序分包

一、小程序分包 微信文档写的够清楚了 使用分包 | 微信开放文档 (1)常规分包注意点: 每个分包只能引用主包和自己的资源 (2) 独立分包注意点:特别麻烦 懒得用了吧 独立分包中不能依赖主包和其他分包中的内容 …

解决Sublime Text3莫名的中文乱码问题

有好几回用Sublime Text3写着中英混杂的文字的时候,会突然就弹出警告说什么编码不行,然后点击确定后,原来的中文全都乱码了: 然后即使按ctrlz撤回也没用,重新打开也没用,用记事本的转换ansi、unicode等方式…

try catch finally的用法

1、不使用try...catch出现异常后,后面的代码都不会运行了 login() {console.log(b);console.log(hhhhhhhh);}, 2、使用了try...catch出现异常后,try...catch后的代码还会继续运行 login() {try{console.log(b);}catch (e){console.log(e);}console.log…

网站优化第一次网页加载的速度的办法与思路。

网站重新开发了一次,第一次部署到测试网络,访问速度很慢,差不多第一次加载得需要40秒,太慢了,这里简单总结一下。 当然,还有一些无用的.MAP文件都可以删除,图片可以在线压缩一下,代码…

我的Serverless实战——大前端趋势之Serverless从入门到天黑

导读:大厂都在做Serverless,他到底是什么东东呢?可能很多人都没有听说过,听说这个是大前端的一个趋势,最近两年比较火,如果你还没有听说过,那你就需要注意啦。今天孙叫兽带大家了解一下Serverle…

element ui upload上传文件成功后,清除默认的列表。

问题描述:每次提交之后,这个上传按钮会有默认的列表,其实刷新这个默认列表就没了。 清除标记位置的办法: 清除列表:(上传成功后,清空列表) 效果图: