Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“理解”;这";在主干/Javascript中_Javascript_Backbone.js - Fatal编程技术网

“理解”;这";在主干/Javascript中

“理解”;这";在主干/Javascript中,javascript,backbone.js,Javascript,Backbone.js,我试图理解如何用主干创建对象和方法。我是这样开始的: Person = (function () { return Backbone.Model.extend({ defaults: { name: 'jon' }, changeName: function (newName) { console.log(newName); this.name = newName; } }); })(); var p1 = ne

我试图理解如何用主干创建对象和方法。我是这样开始的:

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'));

我不明白的是,为什么我的p1.name属性没有改变。我认为它与this.name中的“this”有关,因为我仍在试图理解“this”是如何工作的,但我认为我缺少了其他东西,因为
this.name=newName
name=newName
都不起作用。谢谢

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

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

p1.set({"name": "samantha"})
通过传入对象,后者允许您一次设置多个属性

根据报告:

这样,主干可以在更改属性时触发
change
事件,或者在调用
toJSON()
时提供属性的序列化版本

应该是

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

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