var Shape = function(type)
{
this.type = type;
addEventListener("resize", this.align);
}
Shape.prototype.align = function()
{
alert(this.type);
}
var variable = new Shape('rectangle');
当我调整大小时,我想要警告矩形,但它会提醒未定义
答案 0 :(得分:1)
您需要通过范围在this
事件中使用resize
。
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');

答案 1 :(得分:0)
您需要使用variable.align()
,因为您正在创建新对象。通过这样做,我得到了您所要求的内容:'rectangle'
的提醒。
答案 2 :(得分:0)
this
的值取决于函数的调用方式。它不能在执行期间通过赋值来设置,并且每次调用函数时它可能不同。 ES5引入了绑定方法来设置函数的值,无论它如何被称为[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');