1

チュートリアルに従って backbone.js を学習しています。私はいくつかのコードを試してみましたが、それは本当に奇妙に見えました。最初にモデル インスタンスを で初期化し、モデル インスタンスsrcthesource.jpgを実行してから、属性を にconsole.log設定し、その後に.srcaaaconsole.log

srcJavaScript コンソールでは、両方の出力で同じであることがわかりますaaa。彼らは違うべきではありませんか?

JS コード

var Photo = Backbone.Model.extend({
   defaults: {
        src: 'placeholder.jpg',
        title: 'An image placeholder',
        coordinates: [0, 0]
    },

    initialize: function() {
        this.bind("change:src", function() {
            var src = this.get("src");
            console.log('Image source updated to ' + src);
        });
        console.log('This model has been initialized!');
    },

    changeSrc: function(source) {
        this.set({src: source});
    }
});

window.myPhoto = new Photo({title: "My awesomeness",
                        src: "thesource.jpg",
                        location: "Boston",
                        tags: ['big game', 'vacation']});

console.log(myPhoto.attributes);
myPhoto.set({src:'aaaa'});
console.log(myPhoto.attributes);

コンソール出力

ここに画像の説明を入力

4

2 に答える 2

1

上記の答えは機能しますが、バックボーンには基本的にこれを行う機能が既にあることを指摘したいだけです。toJSONすべての属性を複製してオブジェクトを返す を使用できます。

console.log(myPhoto.toJSON());
myPhoto.set({src: 'aaaa'});
console.log(myPhoto.toJSON());

これは浅いコピーを表示するため、まったく同じではありませんが、入力する必要が少なく、探している場合でも機能します.

于 2012-06-12T16:12:33.630 に答える
1

Google Chrome でオブジェクトをログに記録すると、オブジェクトをログに記録したときではなく、コンソールでプロパティを展開したときに状態が取得されます。

クローンのログを試みることができます:

console.log(JSON.parse(JSON.stringify(myPhoto.attributes)));
myPhoto.set({src:'aaaa'});
console.log(JSON.parse(JSON.stringify(myPhoto.attributes)));
于 2012-06-12T14:21:56.687 に答える