作者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