玩一些es6,遇到了一个问题,我不知道如何解决
class Foo {
constructor ( ) {
window.addEventListener('scroll', this.watch);
}
watch ( ) {
console.log(this);
}
}
在watch
的内部,这是
?目前我用bind窗口
对象,正如预期的那样。但是,我如何引用Foothis.watch.bind(this)
解决了这个问题,但我想知道是否有一种更“合适”的ES6方法来实现这一点。
在我看来,处理这个问题的纯ES6方法是使用新的代理对象。实现将如下所示:
class Foo {
constructor() {
let proxy = new Proxy(this, this.watch);
window.addEventListener('scroll', proxy);
}
watch(e) {
console.log(this, e.target);
}
}
我本来会包含一个Babel REPL示例,但是,这里有一个免责声明:Babel REPL不支持Proxy对象。angax的兼容性表显示了对各种Javascript引擎的支持。
class
关键字只是已知javascript原型继承链的一个语法糖。这种归因机制的工作方式是相同的。只要把这个类看作是一个很好的旧函数,它与这个函数一起工作,因此它可以归因于使用new
关键字的类。
E6附带了许多新的关键字,使面向对象的javascript更加熟悉。我对此很高兴,但我们都必须记住,基本部分仍然是一样的,只是现在有一些新来者的阴影: D
ps:鉴于你知道这个代码在Javascript中是如何定义的,你可以在没有别名的情况下使用它,比如自代码或类似的东西,尽管这是一种常见的做法。
您可以使用箭头功能。
arrow函数表达式(也称为fat arrow函数)与函数表达式相比具有更短的语法,并在词汇上绑定此值。
window.addEventListener('scroll', () => this.watch());
我想制作一个,传递事件和一些参数。问题是函数没有得到元素。下面是一个例子: 必须在匿名函数之外定义。如何获取传递的元素以在匿名函数中使用?有办法做到这一点吗? 那么呢?我似乎根本无法通过传递事件,是吗? 使现代化 我似乎用“这个”解决了这个问题 其中包含我可以在函数中访问的。 addEventListener 但是我想知道:
我正在用ES6编写一个简单的组件(使用BabelJS),函数不工作。 典型的错误包括 无法读取未定义的属性“set state” 或 This.SetState不是函数 你知道为什么吗?代码如下:
我试图创建一个反应组件,这是一个文本输入。当有人按下回车键时,必须调用mymethod()。但是在handleKeyPress,我不能访问类范围。我怎样才能解决这个问题?
出于某种原因,我在es6课上给“这个”取了个奇怪的值... null null 为什么clickers的click方法中的“this”指的是dom节点而不是...本身? 更重要的是,如果我不能使用“this”来做的话,我如何从它的click方法中引用clickers的count属性?
我试图从子文件夹加载fxml,但失败了。我有做替换场景内容的行: 谢谢
本文向大家介绍学习JavaScript事件流和事件处理程序,包括了学习JavaScript事件流和事件处理程序的使用技巧和注意事项,需要的朋友参考一下 本文全篇介绍了JavaScript事件流和事件处理程序,分享给大家供大家参考,具体内容如下 一、事件流 事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而Netscape Communicator的事件流是事件捕获流。 二、事件冒泡