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. 個人インスタンスを削除しましたが、警告すると、デフォルト値ではなく John と 100 が表示されるのはなぜですか。
  2. 初期化とコンストラクターの違いは何ですか。それは同じ仕事をしますか?
  3. これらの値が格納されるメモリの部分。私はそれがスタックである可能性があることを知っていますが、誰かがこれについて洞察を与えることができます.
4

2 に答える 2

1
  1. そして3.本当にあなたはしませんでした。削除オブジェクトからプロパティを削除するか、配列から要素を削除します。javascriptオブジェクトを削除することはできません。このオブジェクトへのポインタを削除し、GCがメモリをクリーンアップするのを待つだけです。に置き換え delete person;person = undefined;ポインタを削除します

  2. Person.prototype.constructorBackboneが独自の内部処理を行う実際のコンストラクターです。最終的には実行Person.prototype.initilalizeされます--on_createロジックを配置する場所

于 2012-07-05T18:55:44.390 に答える
1

-1 "delete 演算子は、オブジェクト、オブジェクトのプロパティ、または配列内の指定されたインデックスにある要素を削除します。"

基本的に、このフィドルのようなものがあれば、削除演算子は配列に対して機能します。js コンソールを確認してください。delete オペレーターが配列からアイテムを削除したため、エラーがスローされます。

-2 Backbone.js では、初期化関数をコンストラクターのように扱うことができます。これを使用して、初期化時にオブジェクトに渡されるパラメーターをデフォルト以外の方法で処理できます。

-3 については、答えがありません。

うまくいけば、これが(部分的に)役に立ちました!

于 2012-07-05T12:56:02.790 に答える