!this.get在骨干todo MVC应用程序中的含义

时间:2014-02-23 15:04:45

标签: javascript backbone.js

在示例骨干Todo MVC应用程序中遇到以下内容,它对我没有任何意义,谷歌搜索并且没有骰子,

在todo模型中有这种切换方法:

// Toggle the `completed` state of this todo item.
toggle: function() {
  this.save({
    completed: !this.get('completed')
  });
}

我一直都明白!意思是'不',这对我来说没有意义,正如我在假设触发切换事件时所假设的那样,想要保存已完成的状态。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

基本原则: 假设,我们有一个方法,返回一个布尔状态。

var state = obj.getState('completed');

如果getState返回true,则变量state也是true

现在:

var state = !obj.getState('completed');

我们 反转 结果,这意味着:如果getState返回true,则变量state设置为{{1 }}

为了进行false之类的切换,我们可以

true - false - true - false

如果a为真,则为假,如果为假,则为真等。

答案 1 :(得分:1)

它确实意味着“不”,这就是正在进行状态的实际切换。在这种情况下,!运算符是逻辑运算符,并返回complementarty布尔值。

this.get('completed')调用将获取completed属性的当前状态,例如值true

!运算符将获得互补值,例如值false

此值用于创建对象文字,例如{ completed: false }

该对象用于调用save方法,因此对象中的值将用作completed属性的新值。