typescript设置默认值_typescript 属性默认值使用箭头函数 this指向问题

今天注意到前端小伙伴用react 定义component class的方法的时候是通过箭头函数的方式,表示好奇。

class Test extends React.Component {

public fun1 = () => {

console.log(this);

};

fun2() {

console.log(this);

}

}

如上代码中fun1的定义方式。于是感到好奇,fun1中的this是什么。

如果我们套用箭头函数的概念,我们可能认为,这中间的this是否会指向环境变量global或window。然而却不是这样的,而是指向new Test()实例。

我们可以看以下的等价写法:

class Test extends React.Component {

constructor() {

super();this.fun1 = () =>{

console.log(this);

};

}

fun2() {

console.log(this);

}

}

也就是在属性默认值中定义的箭头函数,等价于构造函数中的定义,所有this指向的是实例。

那么为何要用定义箭头函数属性的方式来定义方法呢?

它和fun2的方式的this指向的不是都是实例吗?

const obj = newTest();

obj.fun1();//指向obj

obj.fun2();//指向obj

//差异

const fun1=obj.fun1;

const fun2=obj.fun2;

fun1();//指向obj

fun2();//global

如上代码,我们如果直接用实例来调用,则没什么差异。

但是,当我们先赋值给变量,由于fun2是绑定调用者的,所以这里为全局变量。

所以直接定义箭头函数属性的效果在于它直接绑定了实例,可以直接使用,这个对应react的jsx中使用是比较方便的,不然使用fun2模式,就需要手动绑定this再使用。

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

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

相关文章

mysql递归树函数效率_MYSQL递归树查询的实现

​ 在oracle中我们可以使用connect by prior 函数来实现组织树表递归的查询,但是在mysql中却没有该方法,为了能够使用该方法我们就得自己创建函数来实现该组织树的递归查询。以下实现了2种方式来满足子节点的递归查询与父节点的递归查询。实现子递归查…

poj 4468Spy(kmp算法)

Spy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 204 Accepted Submission(s): 96 Problem Description “Be subtle! Be subtle! And use your spies for every kind of business. ” — Sun Tzu “A spy…

mysql 64位下载 win7_关于Win7 64位 mysql 5.7下载安装问题

1、从官网下载mysql:网址:http://dev.mysql.com/downloads/mysql/这是我们要找的,win7 64位点击下载;出现如图所示,我们不必要登录注册,点击红线内的即可的即可。2、安装及配置:然后解压到本机文…

mysql级联保存_mysql数据库级联同步配置

mysql数据库级联同步配置步骤,本文以一台mysql数据库多实例3306、3307和3309为例进行配置,3306为主库,3307为从库,3309为子从库(多台单实例与一台多实例配置是一样的)一.my.cnf文件配置1.三个数据库实例修改my.cnf配置文件&#x…

C#实现从服务器上下载DLL文件

C#实现从服务器上下载DLL文件,具体代码如下: var fullQualifiedPathToDll Server.MapPath("/") "/bin/mydll.dll"; var myFileStream new FileStream(fullQualifiedPathToDll, FileMode.Open);var fileSize myFileStream.Length…

mysql+数据库主从原理_涨知识!MySQL 主从同步原理原来是这样的

原标题:涨知识!MySQL 主从同步原理原来是这样的什么是 MySQL 主从同步当 master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。主从同步有什么好处水平扩展数据库的负载能力容错,高可用。 Failover/High Availabili…

第三方控件netadvantage UltraWebGrid如何生成带加号多级表数据也就是带子表

1.看代码不解释: ds.Relations.Add("fk", ds.Tables[0].Columns["Id"], ds.Tables[1].Columns["ParentCardId"], false); 将父表和子表放到dataset中通过设置外键关联,这样就会自动绑定上。由于某些原因表不允许自动生成列…

mysql 中int(255)_【数据类型】int ,int(1),int(255)有什么区别?

问题:int(255) 数据类型的容量,比int(1)更多吗?遇到问题,第一反应是去查说明书,可以在mysql document 中找到int这种数据类型的容量是多少,Integer Types (Exact Value)里面只提到了 INT的容量,…

mysql 5.5.28 winx64_mysql-5.7.28-winx64(压缩包)安装教程

1.下载完成后解压放到指定位置我放的C:\Develop\mysql-5.7.28-winx642.在目录下新建  my.ini  内容如下[mysql]# 设置mysql客户端默认字符集default-character-setutf8[mysqld]#设置3306端口port 3306# 设置mysql的安装目录basedirC:\Develop\mysql-5.7.28-winx64# 设置my…

顶级旗舰ET9出道,蔚来还是那个「最不计成本」的中国车品牌

作者 |张祥威 编辑 |德新 2008年,李斌和新浪的曹国伟几人一起喝酒,发了第一条微博,「天冷带围巾,心冷发微博」,一晚上涨了2000多个粉丝,他偶尔还会针砭时事,很快积累了最早一波粉丝。 创立蔚来…

jQuery对checkbox的操作(转载)

$(document).ready(function(){//checkbox全选$(#btn1).click(function(){$("[name checkbox]").attr(checked,true);});//checkbox取消选择$(#btn2).click(function(){$("[name checkbox]").attr(checked,false);});//checkbox反选$(#btn3).click(funct…

mysql5.0 测试_mysql5.0入侵测试以及防范方法分享_MySQL

bitsCN.com在做了之前的SQL SERVER之后,便很想尝试一下MYSQL的入侵测试已经防范,与大家一起分享。总的来说,我一直在用的是MYSQL,对MYSQL比较熟悉,相比较而言,感觉MYSQL更安全,这只是我自己胡乱…

qt 在label上以光标位置进行缩放_Qt编写地图综合应用22-动态轨迹

一、前言上一篇文章写道拿到路径规划的轨迹点坐标集合,并且已经可以通过调用addPolyline绘制线段的形式将轨迹点绘制,接下来就是要如何动态的绘制这些轨迹点,最简单的方法就是开个定时器挨个取出下一个经纬度坐标,然后调用封装好的…

[codility]Min-abs-sum

https://codility.com/demo/take-sample-test/delta2011/ 0-1背包问题的应用。我自己一开始没想出来。“首先对数组做处理,负数转换成对应正数,零去掉,计数排序统计有多少个不同元素及其对应个数,并累加所有数的和sum,…

mysql kettle_带你躲过mysql与kettle闹离婚的坑,开发不迷茫

其实呢kettle配mysql还是蛮不错的,首先人家门当户对,都是开源的哈,其次,kettle也是比较听话的,什么事都以mysql为主,mysql不满意,他就立马报错。那下面就是mysql与kettle闹脾气要离婚的例子啦&a…

poj 1161 最短路构图

题目链接&#xff1a;http://poj.org/problem?id1161 #include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <cstring> #include <queue> #include <vector>#define maxn 400 #define INF 0x3f…

struct里面有union_联合体union无可替代的使用

在C语言中关键字union和struct用法是一样的&#xff0c;而且在项目中struct随处可见。在我的专栏"嵌入式入门——C语言入门到深入"中我详细的讲解了它们的异同。很多人编码了多年也许会认为有struct就够了&#xff0c;要union干嘛&#xff0c;感觉union的存在有些鸡肋…

[转]字符串匹配那些事

本系列文章主要介绍几种常用的字符串比较算法&#xff0c;包括但不限于蛮力匹配算法&#xff0c;KMP算法&#xff0c;BM算法&#xff0c;Horspool算法&#xff0c;Sunday算法&#xff0c;fastsearch算法&#xff0c;KR算法等等。 本文主要介绍KMP算法和BM算法&#xff0c;它们分…

查看kafka的主从状态_Mysql 主从复制,mysql-proxy读写分离

准备两台mysql服务器&#xff0c;master&#xff08;192.168.43.64&#xff09;、slave&#xff08;192.168.84.129&#xff09;master配置&#xff1a;log-binmysql-bin binlog_formatmixed server_id1 binlog_checksumnoneslave配置:然后给master授权并查看二进制文件名称和位…