0

我是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. 我确实删除了我的 person 实例,但是当我提醒为什么我得到 John 和 100 而不是默认值时。
  2. 初始化和构造函数有什么区别。它做同样的工作吗?
  3. 这些值存储在内存的哪个部分。我知道它可能是堆栈,但有人可以对此提供见解。
4

2 回答 2

1

-1 “delete 运算符删除对象、对象的属性或数组中指定索引处的元素。”

基本上就像 delete 运算符适用于数组一样,如果你有这样的fiddle。检查您的 js 控制台,它会引发错误,因为删除运算符已从数组中删除该项目。

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

对于-3,我没有答案。

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

于 2012-07-05T12:56:02.790 回答
1
  1. 3. 你真的没有。从数组中删除对象或元素的删除属性您不能删除 javascript 对象,只能删除指向该对象的指针并等待 GC 清理内存。替换 delete person;person = undefined;删除指针

  2. Person.prototype.constructor是一个真正的构造函数,Backbone 做它自己的内部事情。最后它运行Person.prototype.initilalize——放置你的 on_create 逻辑的地方

于 2012-07-05T18:55:44.390 回答