在backbone.js模型中的几个问题

时间:2012-07-05 10:23:46

标签: javascript backbone.js

我是关于backbone.js的初学者。这是我正在努力的方向。

http://jsfiddle.net/pW3SZ/

Person = Backbone.Model.extend({
        defaults: {
            name: 'Fetus',
            age: 0,
            children: []
        },
        initialize: function(){
            //alert("Welcome to this world");
        }
});

var person = new Person({name: 'John', age: '100'});
delete person;

//var person = new Person;
//person.set({name: 'Cooper', age: '90'});

alert(person.get('name') + ' ' + person.get('age'));
  1. 我确实删除了我的人物实例,但当我提醒我为什么要得到约翰 和100而不是默认值。
  2. initialize和构造函数之间有什么区别。它做同样的工作吗?
  3. 在哪个部分的内存中存储这些值。我知道它可能是堆栈,但有人可以对此有所了解。

2 个答案:

答案 0 :(得分:1)

-1 "The delete operator deletes an object, an object's property, or an element at a specified index in an array."

基本上,当删除操作符适用于数组时,如果你有这样的fiddle。检查你的js控制台,它会抛出一个错误,因为删除操作符已从数组中删除了该项。

-2在Backbone.js中,您可以像构造函数一样处理initialize -function。您可以使用它来处理在初始化时以默认方式传递给对象的参数。

对于-3我没有答案。

希望这(部分)有所帮助!

答案 1 :(得分:1)

  1. 和3.真的没有。 delete从对象或元素中删除属性 阵列。你不能删除javascript对象只删除 指向此对象的指针,并等待GC清理内存。更换 delete person; person = undefined; Person.prototype.constructor删除指针

  2. Person.prototype.initilalize是一个真正的构造函数,其中Backbone执行它自己的内部事务。最后它运行{{1}} - 放置你的on_create逻辑