在Backbone/Javascript中理解"this"

Cry*_*tal 2 javascript backbone.js

我试图了解如何使用Backbone创建对象和方法.我从这样的事情开始:

Person = (function () {
  return Backbone.Model.extend({
    defaults: {
      name: 'jon' 
    },

    changeName: function (newName) {
     console.log(newName);
      this.name = newName;
    }
  });

})();


var p1 = new Person();
console.log(p1.get('name'));
p1.changeName("samanatha");
console.log(p1.get('name'));
Run Code Online (Sandbox Code Playgroud)

我不明白的是,为什么我的p1.name属性没有改变.我认为它有一些东西需要与"本"在this.name因为我仍然在试图掌握如何"这"工作,但我觉得我失去了,因为别的事情this.name = newNamename=newName两个不工作.谢谢!

Cia*_*ims 5

name包含在模型的属性中:p1.attributes.name.这就是你使用它访问它的原因get().如果要更改name,可以执行以下操作之一:

p1.set("name", "samantha")

p1.set({"name": "samantha"})
Run Code Online (Sandbox Code Playgroud)

通过传入一个对象,后者允许您一次设置多个属性.

根据文件:

Please use set to update the attributes instead of modifying them directly.
Run Code Online (Sandbox Code Playgroud)

这样,Backbone可以执行change更改属性时触发事件或在调用时提供属性的序列化版本等操作toJSON().