【发布时间】:2013-07-19 20:36:23
【问题描述】:
标题可能不正确,但我不知道如何提问!
我正在尝试学习在 JavaScript 中编写面向对象,并且我正在重写我的一个项目,因此我可以使用类的方法来代替大量匿名函数和重复代码。现在我在以下代码中遇到错误:
var cart = {
cartModal: $("#cart-modal"),
$checkboxes: this.cartModal.find("input[name=check]"),
// ^^^^^^^^^^^^^^
toggleModal: function(e) {
this.cartModal.modal('toggle');
this.handleCheckboxes();
e.preventDefault();
},
handleCheckboxes: function() {
this.cartModal.find("input.checkall").click(function() {
$checkboxes.prop("checked", !$checkboxes.prop("checked"));
});
}
};
$("#cart-link").click(function(e) {
cart.toggleModal(e);
});
但我一直面临这个错误:
TypeError: this.cartModal is undefined
我应该使用其他任何东西来使用对象内部的属性吗?还是问题出在其他地方?
【问题讨论】:
-
问题是在对象定义的时候不能引用它。
-
@FelixKling 那么如果我不能在对象定义中使用
this有什么用呢?我什么时候可以使用它? -
@faridv — 主要是在用作方法的函数内部(即,与示例代码中
this的所有其他用法一样)。 -
您可以在对象的方法中使用它来引用对象。或者在事件处理程序中引用目标元素。或者到构造函数中的新对象。还有更多!
标签: javascript oop