作者kilva (嗡嗡)
看板Ajax
標題[問題] this和prototype
時間Sat Jun 16 11:28:19 2012
var A = function() { this.b = "b"; };
A.prototype.c = "c";
var a = new A();
a.b; // "b"
a.c; // "c"
請問,上面使用this和prototype定義的特性有什麼不同嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.115.232
1F:推 LaPass:一個是設定到所有物件,一個是設定到單一物件的樣子。 06/16 11:58
2F:推 musie:跟繼承有關.. prototype就如同字面一樣,就是他的原型 06/16 13:15
3F:→ musie:prototype裡面定義的會繼承下去 this就只作用在目前物件 06/16 13:18
4F:推 mrbigmouth:this設定的是該物件本身 06/17 21:03
5F:→ mrbigmouth:prototype設定的是該物件的prototype(廢話) 06/17 21:04
6F:→ mrbigmouth:當程式在一個物件中尋找一個屬性但找不到時 才會尋找該 06/17 21:04
7F:→ mrbigmouth:物件的prototype看看是否有該屬性 所以this設定的屬性 06/17 21:05
8F:→ mrbigmouth:比prototype優先 06/17 21:05
9F:→ mrbigmouth:簡單的說 上文的程式碼你可以繼續寫a.c = "d"覆寫過去 06/17 21:05
10F:→ mrbigmouth:但是由new A()得來的新物件的.c還是會==="c" 06/17 21:06
11F:→ mrbigmouth:只要delete a.c a.c就會再次變回"c" 06/17 21:07
12F:→ mrbigmouth:更正一下 我的第四句 正確的說找該物件的__proto__ 06/17 21:07
13F:→ mrbigmouth:物件的__proto__是由生產fn的prototype得來的 06/17 21:08
14F:推 mrbigmouth:自己google一下javascript prototype吧 很多介紹的 06/17 21:10