Javascript stop";这";来自函数调用更改的关键字?
我在想。我有一个按钮,当我按下它时,我会在那里调用一个函数。我使用JQuery这样做:Javascript stop";这";来自函数调用更改的关键字?,javascript,onclick,this,call,keyword,Javascript,Onclick,This,Call,Keyword,我在想。我有一个按钮,当我按下它时,我会在那里调用一个函数。我使用JQuery这样做: this.chose_button.on('click', function() { tryInputSong(this, this.link_input.val()); }); 但问题是,我需要“tryInputSong”的输入参数与“this.choosed_button”中的“this”关键字是同一个对象,而不是“this.choosed_button”对象本身。有没有办法阻止“this”关键字将
this.chose_button.on('click', function() {
tryInputSong(this, this.link_input.val());
});
但问题是,我需要“tryInputSong”的输入参数与“this.choosed_button”中的“this”关键字是同一个对象,而不是“this.choosed_button”对象本身。有没有办法阻止“this”关键字将值更改为this.choosed_按钮,或者我必须以某种方式通过另一个函数传递我想要的对象
我真的很困惑如何解决这个问题,我希望能得到一些帮助,谢谢!:) 传统的解决方法是从您想要的上下文中存储对此的引用,并在以后重用它:
var self = this;
this.chose_button.on('click', function() {
tryInputSong(self, self.link_input.val());
});
您还可以在函数上显式绑定此值:
this.chose_button.on('click', function() {
tryInputSong(this, this.link_input.val());
}.bind(this));
或者,如果您的环境支持ES6 arrow函数(或者您使用transpiler添加相应的多边形填充),则可以使用不会更改此绑定的
this.chose_button.on('click', () => {
tryInputSong(this, this.link_input.val());
});
传统的解决方法是从您想要的上下文中存储对此的引用,并在以后重用:
var self = this;
this.chose_button.on('click', function() {
tryInputSong(self, self.link_input.val());
});
您还可以在函数上显式绑定此值:
this.chose_button.on('click', function() {
tryInputSong(this, this.link_input.val());
}.bind(this));
或者,如果您的环境支持ES6 arrow函数(或者您使用transpiler添加相应的多边形填充),则可以使用不会更改此绑定的
this.chose_button.on('click', () => {
tryInputSong(this, this.link_input.val());
});
JS引入了箭头函数,允许您引用外部
值
this.chose_button.on('click', event =>
tryInputSong(this, this.link_input.val())
);
由于箭头函数不绑定它们自己的本地this
,因此它使用来自外部环境的本地
我上面展示的语法有一个表达式作为函数体。如果需要多个语句,那么可以使用大括号定义主体,就像使用传统的function
语法一样
您仍然可以通过事件获取对绑定元素的引用。currentTarget
JS引入了箭头函数,允许您引用外部此
值
this.chose_button.on('click', event =>
tryInputSong(this, this.link_input.val())
);
由于箭头函数不绑定它们自己的本地this
,因此它使用来自外部环境的本地
我上面展示的语法有一个表达式作为函数体。如果需要多个语句,那么可以使用大括号定义主体,就像使用传统的function
语法一样
您仍然可以通过事件获取对绑定元素的引用。currentTarget
您可以这样做:
var self = this;
this.chose_button.on('click', function() {
tryInputSong(self, self.link_input.val());
});
或者使用箭头函数:箭头函数没有自己的箭头函数;使用封闭执行上下文的此值您可以这样做:
var self = this;
this.chose_button.on('click', function() {
tryInputSong(self, self.link_input.val());
});
或者使用箭头函数:箭头函数没有自己的箭头函数;使用封闭执行上下文的this值var oldThis=this
,然后您可以执行tryInputSong(oldThis,oldThis.link_input.val())
var oldThis=this
然后您可以执行tryInputSong(oldThis,oldThis.link_input.val())代码>箭头功能的可用性取决于所需的浏览器支持以及是否使用babel进行传输。@lkroneman:是的,非常正确。箭头功能的可用性取决于所需的浏览器支持以及是否使用babel进行传输。@lkroneman:是的,非常正确。