0

ここのコードで最もよく説明されている状況がありますhttp://jsfiddle.net/sabithpocker/EsF4R/34/ 年をクリックして問題を確認してください。

サンプル ビューを次に示します。

App.myView = Ember.View.extend({
date : new Date(),
dateString : function(){
    return this.get('date').getFullYear();
    }.property().cacheable(),
click : function(e){
    this.$().append('<br/>clicked: now this.get("date") = ' + this.get('date').getFullYear());
    var tempDate = this.get('date');
    tempDate.setFullYear(1988);
    this.$().append("<br/>tempDate :" + tempDate.getFullYear() + " & " + "this.get('date') :" + this.get('date').getFullYear());
    }
});

クリックイベント内で、保存のために日付を一時変数に保存しようとしていますが、一時変数で作業すると、変更が元の変数に反映されます。それは私が望んでいないことです。

私は次のことでこれを克服しました:

var tempDate = new Date(this.get('date'));

しかし、私はここで何が間違っていますか?

4

1 に答える 1

1

var tempDate = this.get('日付');

tempDate.setFullYear(1988);

this.get('date') は、オブジェクトへの参照を返します。元のオブジェクト自体に年を設定しています。

これを行う場合:

var tempDate = new Date(this.get('date'));

元のオブジェクトを新しいオブジェクトに複製しました。それ以降のすべての操作は、元のオブジェクトを操作しません。

于 2012-06-25T03:49:13.213 に答える