2012-07-05 76 views
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. 我没有删除我的个人情况,但是当我提醒为什么我得到约翰 和100,而不是默认值。
  2. 是什么初始化和构造函数之间的区别。它做同样的工作吗?
  3. 内存的哪些部分是否存储这些值。我知道这可能是堆栈,但有人可以对此有所洞察。

回答

1

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

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

-2 Backbone.js的,你可以把初始化-function像一个构造函数。您可以使用它来处理在初始化时交给对象的参数,其他方式则采用默认方式。

对于-3我没有答案。

希望这(部分)帮助!

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

  2. Person.prototype.constructor是一个真正的构造,其中骨干做它自己的内在的东西。最后,它运行Person.prototype.initilalize - 地方放你on_create逻辑