我正在尝试使用原型方法构建一个可重用的Database
类,以便将项添加到类的list
数组属性中:
var Database = function() {
this.list = [];
}
Database.prototype = {
getBooks: function () {
$.get("//some.url/books")
.success(function(res) {
_.each(res,function(book) {
this.list.push({
name: book.name,
url: book.url,
type: "book"
})
})
});
}
}
但是,目前我收到一条警告,说我无法推送到未定义的属性list
,我只能假设我实际上并没有.push
任何Database
类实例属性,而是原型属性。
所以,问题重申:如何使用原型方法更改实例的属性?
答案 0 :(得分:1)
您可以在变量中存储对this
的引用,例如
Database.prototype = {
getBooks: function () {
var _this = this;
$.get("//some.url/books")
.success(function(res) {
_.each(res,function(book) {
_this.list.push({
name: book.name,
url: book.url,
type: "book"
})
})
});
}
}
答案 1 :(得分:0)
“这个”指的是什么,取决于具体情况。查看mdn以获取更多详细信息:MDN this operator
此线程可以帮助您清楚地了解如何将“this”传递到另一个范围:Stackoverflow thread