我有以下代码没有按预期运行:
var person = new Class({
initialize: function(name)
{
this.personName = name;
alert(this.personName) //WORKS :-)
this.testFunc(); //WORKS :-)
this.createShape(); //PAINTS SHAPE BUT CANNOT ACCESS 'personName'
},
testFunc() : function()
{
alert(this.personName);
},
createShape() : function()
{
this.personShape = paper.rect(40,40,40,40).attr({"fill":"blue"});
$(this.personShape.node).click(function()
{
alert(this.personName);
});
}
});
警报不适用于click事件,我确实理解它,因为它无法访问对象变量'personName'。但是,我想知道是否可以通过某种方式访问它?
有没有一个简洁的小javascript技巧来实现这个目标?
感谢您的反馈。
答案 0 :(得分:1)
在click
的{{1}}功能中,上下文设置为createShape
。 this.personShape.node
不再引用您的this
,因此需要对其进行缓存。试试这个:
person
此外,您的函数不应在类/对象定义中具有括号。此外,出于某些原因,最好开始将花括号放在与语句相同的行上。这是我的重构:
createShape: function() {
var context = this;
context.personShape = paper.rect(40,40,40,40).attr({"fill":"blue"});
$(context.personShape.node).click(function() {
alert(context.personName);
});
}