爲了便於理解vue中的this指向===》稍微模仿下vue中的 data,computed下面的屬性 可以用vm(實例)訪問;也可以vm.$el,vm.$data。

// <!-- 模仿Vue構造函數 -this的指向問題->

var C = function (obj) {

for (key1 in obj) {

if (key1 == "data" || key1 == "computed") {

for (key2 in obj[key1]) {

this[key2] = obj[key1][key2]

}

}

var key1s = "$" + key1;

this[key1s] = obj[key1]

}

}

//-----------------------------------------------------------------------------------

var obj = {

data: {

a: 1,

b: 2,

afun: function () {

// this指向vm

return this.a;

}

},

el: {

el: 3

},

computed: {

bfun: function () {

// this指向vm

return this.b

}

}

}

var vm = new C(obj);

console.log("---------------------------------------------------------------------------------")

console.log(vm.afun())

console.log(vm.bfun())

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章