Javascript 方法看不到对象变量
Javascript method doesn't see object variable
var Shape = function(type)
{
this.type = type;
addEventListener("resize", this.align);
}
Shape.prototype.align = function()
{
alert(this.type);
}
.
var variable = new Shape('rectangle');
当我调整大小时,我想要警报矩形,但它警报未定义
您需要传递作用域才能在resize
事件中使用this
。
var Shape = function(type) {
this.type = type;
addEventListener("resize", this.align.bind(this));
}
Shape.prototype.align = function() {
alert(this.type);
}
var variable = new Shape('rectangle');
您需要使用 variable.align()
,因为您要创建一个新对象。通过这样做,我得到了您的要求:带有'rectangle'
的警报。
this
的值由函数的调用方式决定。它不能在执行期间通过赋值设置,并且每次调用函数时它可能会有所不同。ES5 引入了绑定方法来设置函数的值 this,而不管它如何被称为 [MDN]
Function.prototype.bind()
方法创建一个新函数,该函数在调用时将其 this 关键字设置为提供的值。
var Shape = function(type) {
this.type = type;
addEventListener("resize", function() {
this.align();
}.bind(this));
//OR addEventListener("resize", this.align.bind(this));
}
Shape.prototype.align = function() {
alert(this.type);
}
var variable = new Shape('rectangle');
相关文章:
- 替换另一个变量对象中的变量值
- 如何从表单变量对象中获取特定的from属性
- 变量/对象是否按值传递,为什么我不能在 javascript 中使用变量更改对象的属性
- 执行上下文和变量对象在 JavaScript 中实际上是一回事吗?
- 如何将变量对象传递到多个javascript弹出窗体
- 如何将javascript变量/对象从一个页面传递到另一个页面
- 在具有递增的变量/对象中存储和控制传单 GeoJSON 图层
- 在回调中重用变量/对象
- 给一个有1个变量/对象的函数给定几个参数
- 使用单词'英语'因为变量/对象名称在javascript中不起作用
- 如何访问变量对象中的数据
- 使用onclick调用变量对象中的函数
- 使用Underscore JS部分和for循环的未定义变量对象
- 如何查看我的变量对象
- 变量对象属性名称作为javascript中的参数
- 从变量对象中移除DOM元素,以便将其发布到服务器
- 根据变量对象是否等于“true”输出内容
- 如何连接(变量+对象键名)以获得点表示法的对象值
- 为什么在ES5中将变量对象改为词法环境
- 动态引用变量(对象)