使用.change更新var?

时间:2018-06-29 14:59:58

标签: javascript jquery

我有一个重要的问题,我将要面对80%的案件。

让我说:

var bcount = properties.count;
favicon.badge(bcount);
bcount.change(function() { favicon.badge(bcount); });

properties.count =其数字根据用户操作而变化。 favicon.badge是一个显示动作的javascript,效果很好。

我试图在bcount var上使用.change,但由于不是元素,因此给我错误,我认为。 值更改时有什么方法可以监听var?

我面临的问题是,当计数更新时,使用一个新数字。仅在刷新页面后更新。

谢谢!

编辑:我正在尝试设置吸气剂和吸油器:

var bcount = {
  a: properties.count,
  get b() { 
    return this.a;
  },
  set c(cname) {
    this.a;
  }
};

可以吗?现在我该如何发起呼叫?

1 个答案:

答案 0 :(得分:0)

我认为您需要getset功能。您可以将逻辑放在这些函数中,它们将在变量get和set中执行您想要的操作。

查看此内容: es5-getters-setter

来自上面链接的示例:

var person = {
    firstName: 'Jimmy',
    lastName: 'Smith',
    get fullName() {
        return this.firstName + ' ' + this.lastName;
    },
    set fullName (name) {
        var words = name.toString().split(' ');
        this.firstName = words[0] || '';
        this.lastName = words[1] || '';
    }
}

person.fullName = 'Jack Franklin';
console.log(person.firstName); // Jack
console.log(person.lastName) // Franklin

编辑:

每个字段都有其getset。如果您想让其他人在阅读您的代码时感到困惑,请这样做。但是正确的事情是这样:

var properties = {
  _count:0, // you hold count value here
  get count() { // every time you get "properties.count" this function will run
    // place for your code that must run on get, like "var bcount = properties.count"
    return this._count;
  },
  set count(new_count) { // every time you want to do "properties.count = some_int" this function will run
    // place for your code that must run on set, like "properties.count = some_int"
    this._count = new_count;
  }
};
// usage
properties.count = 10; // "properties._count" is "10" now
var bcount = properties.count; // you just got "properties._count" value