var construct = function() {
var self = this;
var view = {
name: "self"
};
self.vm = {
attached: attached,
view: view
}
function attached() {
alert('view.name: ' + view.name);
view = {
name: "attached"
};
alert('view.name(after attached): ' + view.name);
alert('self.vm.view.name: ' + self.vm.view.name);
alert('this.view.name: ' + this.view.name);
}
self.vm.attached();
return self.vm;
}()
は、あなたが見ることができるように、我々は(オブジェクトをselv.vmに関連する)グローバルな文脈における変数「ビュー」があります。 ビューは、参照によってself.vmオブジェクトに渡されます。
これを知っていると、 'attached'メソッドはグローバル変数を変更し、その結果、self.vm.viewは新しいオブジェクトを指すことになります。
新しいローカル変数が作成され、同じ名前のグローバルが存在するかどうかは関係ありません。
予期しない動作ではありませんか?なぜそうなの?骨子例にこれをダウン沸騰さ
アラートに表示されている値を書き込むこともできます。 – lakshay
* "...その結果、self.vm.viewは新しいオブジェクトを指します。" *これは間違っています。 – Yoshi