从原型方法更改实例属性
Change instance property from prototype method
我正在尝试使用原型方法构建一个可重用的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
类实例属性,而是原型属性。
因此,问题重述了:如何使用原型方法来更改实例的属性?
您可以在变量中存储对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"
})
})
});
}
}
"
这个"指的是什么,取决于情况。查看 mdn 以获取更多详细信息: MDN 这个运算符
而这个线程可以帮助你清楚地理解如何将"this"传递给另一个范围:堆栈溢出线程
相关文章:
- Backbone.Model.extend不创建实例属性
- 在定义了构造函数之后,是否可以将实例属性添加到JavaScript原型中
- 从原型方法更改实例属性
- 在 IIFE 中使用实例属性
- 在 ES6 中,允许解构类实例属性
- 在 ES6 中自动将参数设置为实例属性
- 将实例属性放置在原型构造函数中,无论好坏
- JS:原型-访问正确的实例属性
- 我可以在Silverlight中的Scriptable Member属性上设置Javascript中的实例属性吗
- 实例属性会模糊原型链吗
- mixin中的prototype.js实例属性
- 为什么不应该't我直接访问实例属性进行写操作
- Javascript”;私人的“;与实例属性相比
- 为什么在原型中声明实例属性而不是在构造函数中声明
- 如何用原型函数更新实例属性,并从另一个函数访问它
- 新的骨干实例属性指向旧的实例属性
- 在实例方法中获取对实例属性的访问权
- ES6类/实例属性
- 为什么赋值影响实例属性而不是原型属性?
- 在Coffee Script中理解类扩展和实例属性