我创建了一个机制,而我可以使用jquery通过AJAX访问给定的资源(用户,帖子等),它可以工作和填充,但我希望能够使用this
关键字,而不是例如Resource.active_filters
,所以我会写this.active_filters
(参见代码)。但是,当我像这样使用它时,它引用methods
对象而不是Resource
对象。如何使它引用Resource
对象?
以下是代码:
var Resource = {
options: {},
active_filters: [],
ready_filters: [],
ready_count: 0,
group_items: [],
init: function () {},
methods: {
reset: function () {
Resource.active_filters = [];
Resource.ready_filters = [];
Resource.ready_count = 0;
},
},
bindEvents: function () {}
};
答案 0 :(得分:4)
除非您定义ES6样式的类或在顶层定义该函数,否则绑定将如何。
你总是可以写一个经典的课程:
function Resource() {
// ...
}
Resource.prototype.reset = function() {
this.active_filters = [ ];
// ...
}
或者你可以定义一个ES6:
class Resource {
reset() {
this.active_filters = [ ];
// ...
}
}
这两种风格比你问题中的方法更常规。
答案 1 :(得分:1)
看起来这是您正在编写的一些API,将由其他一些代码调用。
调用此API时,请按以下方式调用reset
:
reset.call(Resource)
这将使用reset
对象的上下文调用Resource
函数。
更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call