为什么我可以't访问“;内部变量“;在我的javascript代码中使用事件绑定
why I can't access the "inner variable" with event binding in my javascript code?
我是javascript编程的新手。下面是我的代码,它非常简单。我只是不知道为什么c.calculate()
会提醒右边的数字(5),但如果点击按钮,就会提醒undefined
。以及如何更改代码以让"点击"警报编号为5?
//testing
var Cal = function(){
this.x = 5;
}
Cal.prototype.calculate = function(){
alert(this.x);
}
Cal.prototype.add_button = function(){
var mybutton = $("<button id='test'>test</button>").appendTo('body'); // I am using Jquery
mybutton.bind('click',this.calculate);
}
var c = new Cal();
c.add_button(); // when click on the 'test' button, will alert "undefined"
c.calculate(); // will alert '5'
要设置正确的上下文,您可以使用(只要您已经在使用jquery):
mybutton.bind('click', $.proxy(this.calculate, this));
或
mybutton.bind('click', this.calculate.bind(this));
后者的支持是有限的(参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Browser_compatibility)
this
指向的是c
以外的其他对象。试试这个:
Cal.prototype.add_button = function(){
var mybutton = $("<button id='test'>test</button>").appendTo('body'); // I am using Jquery
var that = this; //important
mybutton.bind('click',function(){
return that.calculate();
});
}
相关文章:
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 简化此If语句,使其不会't重复代码-Javascript
- 十进制到二进制代码Javascript
- 第二次单击时执行不同的代码(JavaScript)
- 在不使用jquery($symbol)knockout.js的情况下分离代码javascript
- 缩短几个元素的onclick代码 - JavaScript
- 英国银行排序代码 JavaScript 正则表达式
- 我无法在谷歌图表的代码 javascript 中获取 json 数据(项目 Python Hello Dashboard
- 和代码 JavaScript 没有被 &.
- 我怎样才能减少这段代码 javascript 代码,这样它就不会那么重复了
- 我想单击一个按钮,一次只执行已经制作的程序中的一行代码.(JavaScript)
- 滑动 DIV 代码 Javascript 的小问题
- 尝试重写代码 JavaScript
- 是否可以检测到在不使用键代码 javascript 的情况下按下了输入键
- 输入网址代码 JavaScript 播放器
- 管理通用客户端代码(javascript/css)
- 理解代码javascript
- 加载json-url参数代码(javascript修改)
- 变量检查错误的代码(javascript)
- css属性仅由代码javascript应用