javascript - 如何在对象文字中使用 `this`?

标签 javascript jquery

我正在创建一种机制,而我可以使用 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 () {}
};

最佳答案

这就是绑定(bind)的方式,除非您定义 ES6 样式的类或在顶层定义该函数。

你总是可以写一个经典的类:

function Resource() {
  // ...
}

Resource.prototype.reset = function() {
  this.active_filters = [ ];
  // ...
}

或者你可以定义一个 ES6 的:

class Resource {
  reset() {
    this.active_filters = [ ];
    // ...
  }
}

这两种风格比您问题中的方法更为传统。

关于javascript - 如何在对象文字中使用 `this`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021824/

相关文章:

javascript - 使用 jquery ui 拖放工具

javascript - 如何访问 javascript 写入 DOM 的元素

javascript - XMPP CORS 域错误

JavaScript 请求响应类型

Javascript 幻灯片中心?

javascript - 我可以用自己的图像重新绘制 Canvas 图像吗?

javascript - 使用javascript禁用表单提交按钮

javascript - 当我触发事件点击时,event.toElement.id 总是未定义

javascript - 隐藏下拉列表后,单击时再次显示它?

javascript - 移除部分图片 src 属性