[問題] Vue關於data為什麼要用function
大家好最近在唸vue
相信關於為什麼data要使用function已經被討論到爛掉
看了很多講解都是下面的例子
const MyComponent = function() {};
MyComponent.prototype.data ={
a: 1,
b: 2,
};
const component1 = new MyComponent();
const component2 = new MyComponent();
component1.data.b = 5;
console.log(component2.data)
↑因為會共享同一個reference
-----------------------------------
所以應該改成以下function的方式:
const MyComponent = function() {
this.data = this.data();
};
MyComponent.prototype.data = ()=> {
return{
a: 1,
b: 2
}
};
const component1 = new MyComponent();
const component2 = new MyComponent();
component1.data.b = 5;
console.log(component2.data)
但我不太明白的是這個講解,跟是不是function的影響有什麼關係?
因為這邊如果一開始就將data的資料放在constructor裡
像是
const MyComponent = function() {
this.data = {
a:1,
b:2
}
};
每次實例化時就會初始化,所以只要把data放在constructor裡
本來就可以解決問題了,跟是不是function有什麼關係?
--------------------------------------------------
以下為調整過後的範例,對於我自己有比較想通了
希望有助於跟我有一樣有相同問題的人幫助理解
--------------------------------------------------
const MyComponent = function() {
this.data = this.data; //Object表示
//this.data = this.data(); //function表示
};
//Object表示
MyComponent.prototype.data ={
a: 1,
b: 2
};
// //function表示
// MyComponent.prototype.data = ()=>{
// return{
// a:1,
// b:2
// }
// }
const component1 = new MyComponent();
const component2 = new MyComponent();
component1.data.b = 5;
console.log(component2.data)
上面的範例調整了不論使用object或是function的方式
統一條件this.data都放在constructor裡
且也統一調整了獲取的方式都從prototype中拿取
這樣就能單純比較使用object跟使用function的差異
當初卡住的理由是this.data = this.data這行其實就等於原範例中
不寫在constructor的原因,理由是寫與不寫都是從prototype中拿取
當時沒想到這點,所以卡了很久
感謝各位大大!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.135.34 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1688885096.A.532.html
推
07/09 21:25,
1年前
, 1F
07/09 21:25, 1F
不好意思不太明白,請問這有範例可以呈現嗎?
→
07/09 21:26,
1年前
, 2F
07/09 21:26, 2F
→
07/09 21:26,
1年前
, 3F
07/09 21:26, 3F
※ 編輯: heavenbetula (115.43.135.34 臺灣), 07/09/2023 23:18:56
→
07/10 08:02,
1年前
, 4F
07/10 08:02, 4F
→
07/10 08:02,
1年前
, 5F
07/10 08:02, 5F
→
07/10 10:04,
1年前
, 6F
07/10 10:04, 6F
→
07/10 10:12,
1年前
, 7F
07/10 10:12, 7F
→
07/10 10:13,
1年前
, 8F
07/10 10:13, 8F
→
07/10 10:14,
1年前
, 9F
07/10 10:14, 9F
感覺好像偏離了問題
我的疑問不是說哪個方法好
我也沒說constructor比較好
而是想釐清
網路上的解釋是說在constructor中使用了this.data = this.data()
但似乎跟vue為什麼data用function的原因無關?
※ 編輯: heavenbetula (115.43.135.34 臺灣), 07/11/2023 21:18:18
→
07/12 16:56,
1年前
, 10F
07/12 16:56, 10F
→
07/12 16:58,
1年前
, 11F
07/12 16:58, 11F
→
07/12 16:59,
1年前
, 12F
07/12 16:59, 12F
→
07/12 16:59,
1年前
, 13F
07/12 16:59, 13F
推
07/12 18:06,
1年前
, 14F
07/12 18:06, 14F
→
07/12 18:07,
1年前
, 15F
07/12 18:07, 15F
m大說的對,所以我才會想說為什麼網路上一堆解釋都是用這個範例
※ 編輯: heavenbetula (115.43.135.34 臺灣), 07/14/2023 21:48:50
→
07/15 01:50,
1年前
, 16F
07/15 01:50, 16F
推
07/15 02:47,
1年前
, 17F
07/15 02:47, 17F
→
07/15 02:47,
1年前
, 18F
07/15 02:47, 18F
→
07/15 02:48,
1年前
, 19F
07/15 02:48, 19F
→
07/15 02:49,
1年前
, 20F
07/15 02:49, 20F
→
07/16 10:55,
1年前
, 21F
07/16 10:55, 21F
→
07/16 10:56,
1年前
, 22F
07/16 10:56, 22F
→
07/16 11:11,
1年前
, 23F
07/16 11:11, 23F
→
07/16 11:12,
1年前
, 24F
07/16 11:12, 24F
推
07/16 17:26,
1年前
, 25F
07/16 17:26, 25F
→
07/16 17:26,
1年前
, 26F
07/16 17:26, 26F
→
07/16 17:26,
1年前
, 27F
07/16 17:26, 27F
→
07/16 17:26,
1年前
, 28F
07/16 17:26, 28F
→
07/16 17:26,
1年前
, 29F
07/16 17:26, 29F
→
07/16 17:30,
1年前
, 30F
07/16 17:30, 30F
→
07/16 17:32,
1年前
, 31F
07/16 17:32, 31F
→
07/19 00:18,
1年前
, 32F
07/19 00:18, 32F
→
07/19 00:20,
1年前
, 33F
07/19 00:20, 33F
→
07/19 00:22,
1年前
, 34F
07/19 00:22, 34F
→
07/19 00:24,
1年前
, 35F
07/19 00:24, 35F
→
07/19 00:24,
1年前
, 36F
07/19 00:24, 36F
→
07/19 00:30,
1年前
, 37F
07/19 00:30, 37F
推
07/19 01:55,
1年前
, 38F
07/19 01:55, 38F
→
07/19 01:56,
1年前
, 39F
07/19 01:56, 39F
→
07/19 01:56,
1年前
, 40F
07/19 01:56, 40F
→
07/19 01:56,
1年前
, 41F
07/19 01:56, 41F
→
07/19 02:09,
1年前
, 42F
07/19 02:09, 42F
→
07/21 10:18,
1年前
, 43F
07/21 10:18, 43F
→
07/21 10:20,
1年前
, 44F
07/21 10:20, 44F
→
07/21 10:21,
1年前
, 45F
07/21 10:21, 45F
→
07/21 10:22,
1年前
, 46F
07/21 10:22, 46F
→
07/21 10:25,
1年前
, 47F
07/21 10:25, 47F
→
07/21 10:27,
1年前
, 48F
07/21 10:27, 48F
→
07/21 10:28,
1年前
, 49F
07/21 10:28, 49F
→
07/21 10:29,
1年前
, 50F
07/21 10:29, 50F
→
07/21 10:29,
1年前
, 51F
07/21 10:29, 51F
我知道有許多方法啊
但我就是其中一點不明白才會只針對這一點詢問
假如我是一個程式小白,我對for迴圈不明白
難道你跟我講解多個迴圈方式
會對我針對for迴圈不明白這件事有幫助嗎
所以我才會說這偏離的問題
→
07/21 10:30,
1年前
, 52F
07/21 10:30, 52F
→
07/21 10:30,
1年前
, 53F
07/21 10:30, 53F
→
07/21 10:30,
1年前
, 54F
07/21 10:30, 54F
→
07/21 10:31,
1年前
, 55F
07/21 10:31, 55F
→
07/21 10:31,
1年前
, 56F
07/21 10:31, 56F
→
07/21 10:36,
1年前
, 57F
07/21 10:36, 57F
→
07/21 10:37,
1年前
, 58F
07/21 10:37, 58F
→
07/21 10:39,
1年前
, 59F
07/21 10:39, 59F
→
07/21 10:46,
1年前
, 60F
07/21 10:46, 60F
首先我想澄清一下,如果我只是死讀書,我大可背下這個解法就好
我又何必去追問這個的原因是為什麼
這邊每個大大來回答解惑我都很感激
但不表示我不能表達我覺得有疑問的地方
其實這一版看多了許多發問的問題
往往都會被洗臉甚至被認為這種問題沒什麼好問
只希望大家都可以將心比心
想想每個人都有新手的時候
謝謝
※ 編輯: heavenbetula (115.43.135.34 臺灣), 07/22/2023 13:00:11
※ 編輯: heavenbetula (115.43.135.34 臺灣), 07/22/2023 14:18:25
※ 編輯: heavenbetula (115.43.135.34 臺灣), 07/22/2023 14:22:02
※ 編輯: heavenbetula (115.43.135.34 臺灣), 07/22/2023 14:28:45
Web_Design 近期熱門文章
PTT數位生活區 即時熱門文章