我正在尝试用javascript练习编写面向对象的代码,但它仍然让我感到困惑。我见过其他人问过这个问题,但我还没有找到一个真正明确的答案。我有一个具有嵌套函数的属性,我想使用父类中的一个属性。
var myClass = {
btn: document.getElementById('btn'),
color: "#000",
clickListener: function(){
this.btn.addEventListener("click", function(){
this.style.background = myClass.color;
});
},
}
这是我可以使它工作的唯一方法,但使用类中的类名似乎很奇怪。有没有更好的方法来做到这一点还是正常的?
答案 0 :(得分:1)
附加到对象的任何函数都称为“方法”,您可以通过在方法范围中引用“this”来访问它所附加的对象。由于您位于子函数范围内,因此请存储父范围并使用它:
class HomeView extends BaseView{
constructor(model){
super(null, model);
}
_renderHTML(){
this.$view.html(template(this.model));
return this.$view;
}
_init(){
this.$view.on("click", "#langs li", this._changeLanguage.bind(this));
}
_changeLanguage(){
console.log($(this).data("lang"));
this._renderHTML();
}
}
评论:在Javascript中,这通常不被称为“类”,因为它是一个对象。 “类”通常是函数,您使用var myClass = {
btn: document.getElementById('btn'),
color: "#000",
clickListener: function(){
var self = this;
this.btn.addEventListener("click", function(){
this.style.background = self.color;
});
},
}
创建实例。使用这样的对象通常被称为“单身人士”。