骨干.js模型中的几个问题



我是骨干的初学者.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. 这些值存储在内存的哪个部分。我知道它可能是堆叠的,但有人可以对此发表见解。

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

基本上,由于删除运算符适用于数组,如果您有类似小提琴的东西。检查您的 js 控制台,它会抛出错误,因为删除运算符已从数组中删除了该项目。

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

对于-3我没有答案。

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

  1. 和 3.真的你没有。从对象中删除属性或从中删除元素数组。你不能删除 javascript 对象,只能删除指针指向此对象并等待 GC 清理内存。取代 delete person;person = undefined;删除指针

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

最新更新