Javascript ';这';ES6和敲除的范围

Javascript ';这';ES6和敲除的范围,javascript,knockout.js,ecmascript-6,Javascript,Knockout.js,Ecmascript 6,我在使用ES6时遇到了“this”范围的问题 这里有一个链接到我的BabelJS 调用函数从数组中删除项时,“this”的作用域未定义 在不重新定义这个的情况下,我怎样才能做到这一点(让self=this) “严格使用”; var_createClass=(函数(){ 功能定义属性(目标、道具){ 对于(变量i=0;i{this.myArray.remove(value);}所做的。您是对的@FelixKling。我在本地尝试了这个,但没有成功,因为我没有使用实验性的巴别塔功能。还有其他选项吗

我在使用ES6时遇到了“this”范围的问题

这里有一个链接到我的BabelJS

调用函数从数组中删除项时,“this”的作用域未定义

在不重新定义这个的情况下,我怎样才能做到这一点(让self=this)

“严格使用”;
var_createClass=(函数(){
功能定义属性(目标、道具){
对于(变量i=0;i

使用常规函数时此作用域的问题
使用箭头函数按预期工作

如果您直接在绑定中使用viewmodel函数,您将失去此
的上下文,就像Jeff Mercado解释的那样,因此,如果使用箭头函数表示法,就不必担心
var self=this

因此,请更改以下内容:

removeFromArray(value) {
  this.myArray.remove(value);
}
进入:

它应该很好用


这实际上不是ES6问题,您将
单击事件绑定到对象的方法。您正在丢失此
的上下文。您需要将该方法绑定到父对象。谢谢@JeffMercado。关于如何实现这一目标的任何建议?sroes提供了ES6解决方案。否则,请使用概述的任何方法。请为您的解决方案添加解释,特别是您正在使用ES7提案。这不是ES6。另外,您的解决方案基本上就是OP对this.removeFromArrayWithArrowFunction=value=>{this.myArray.remove(value);}所做的。您是对的@FelixKling。我在本地尝试了这个,但没有成功,因为我没有使用实验性的巴别塔功能。还有其他选项吗?OP已经做了什么,在构造函数中设置函数。@FelixKling您知道在ES7中启用此sintax的功能建议的名称吗?谢谢你advance@CarlosMendes:“类属性”
removeFromArray = (value) => {
  this.myArray.remove(value);
}