【发布时间】:2017-09-18 21:49:06
【问题描述】:
根据这篇文章'this' in TypeScript,我知道 JavaScript 中的“this”与 TypeScript 中的含义不同。我在 JavaScript 中有以下代码,用于在所选节点上创建较粗的笔划,并为所有其他节点提供较小的笔划。
node.on('click', function (d) {
d3.selectAll('circle').attr('stroke-width', 1.5);
d3.select(this).select('circle').attr('stroke-width', 5);
})
在 TypeScript 中我有
this.node.on('click', (d:any) => {
this.node.selectAll('circle').attr('stroke-width', 1.5);
[this is where I need help].select('circle').attr('stroke-width', 5);
}
【问题讨论】:
-
你为什么想要它?用第一个sn-p就可以了,不需要箭头函数语法。
-
因为 'this' 在 JavaScript 中的含义与在 TypeScript 中的含义不同,我正在尝试为 Angular 2 应用程序找到实现 JavaScript 代码的“正确”方法。跨度>
-
this在 TS 和 JS 中的行为具有完全相同的含义。看到更多代码会很有趣。奇怪的是,您同时使用this.node作为d3和node的替代品。你的情况正确吗? -
@H.Trujillo 那篇文章不是这么说的。它表示在 JavaScript 以及 TypeScript 中,
this的行为与 其他 语言不同。 -
@dfsq 不幸的是,仅使用
d对象(第一个参数)无法获取 DOM 元素。但是,第二个和第三个参数可以很容易地用于获取this(在 D3 方法中是当前的 DOM 元素)。
标签: javascript typescript d3.js arrow-functions lexical-scope