原型對象prototype是Object或與之同等級的對象如(function,Number)的一個屬性,protorype是個對象。typeof的值是object。
<SCRIPT?LANGUAGE?=?"JavaScript">?
<!--?

?Object.prototype.toString?=?function?()??
{}?;
Object.prototype.name?=?"?Object?"?;
Object.prototype.porotype_name?=?"?oObject?"?;
Object.prototype.parent_name?=?"?pObject?"?;

Person.prototype.name?=?"?Person?"?;
Person.prototype.porotype_name?=?"?oPerson?"?;

?function??Person()??
{
?????this?.name?=?'Person實例';
}?
?var??o?=?new??Person();

?for?(?var??key??in??o)??
{
????alert(key?+?':'?+?o[key]);
}?
//?-->?
</?SCRIPT?>?
<SCRIPT?LANGUAGE?="JavaScript">?
<!--?
Person.prototype.name?=?"?Person?"?;

?function??Person()??
{
??
}?
?var??o?=?new??Person();
?var??o1?=?new??Person();
alert('o.name:'?+?o.name?+?'??'?+?'o1.name:'?+?o1.name);
o.name?=?'zkj';
alert('o.name:'?+?o.name?+?'??'?+?'o1.name:'?+?o1.name);
//?-->?
</SCRIPT>?
如果看了上一小節的最后一個例子,對自定義的“類”應該比較熟悉了。
在javascript中,可以說沒有方法,因為函數和字符串一樣也是種數據類型,但類中的函數可以用this關鍵字。下面我說的類的屬性可以是方法,也可以指字段。
在一個自定義“類”中有中有幾個地方可以定義屬性。
?? a、函數名中直接定義。? 如Person.name。在這定義相當于類名的屬性。靜態的,訪問的時候必須用Person.name來訪問,不能用new Person().name訪問,也訪問不到。
?? b、構造函數的this.中。當你用new function()時,這些屬性就是你所持對象的屬性。用new Person().屬性? 來訪問。
?? c、構建好對象以后,給對象增加屬性。和構造函數中的屬性使用類似。
?? d、函數名的prototype中
?? e、父類或Object 的prototype中。
(1)對象屬性優先級
通過運行以下代碼,我們訪問對象屬性優先級如下:c>b>d>e
c種屬性必須在定義以后訪問才有效。a種屬性實例訪問不到。
javascrpt語言預定義的屬性不能用for in 得到。如toString
























(2)prototype屬性是只讀的
看如下代碼,你不要試圖通過變量改變原型對象的屬性。你也不可能改變,你只會通過c模式給對象增加一個屬性。
另外原型對象是所有實例共享的。理論上也不可以改變。















主要是
d、函數名的prototype中
e、父類或Object 的prototype中。
這兩種屬性定義
本人正在研究 DWR + prototype,打算用這兩個ajax framework做項目
希望能多多交流, msn: ycchenbanghong AT hotmail.com
<script>
function A(){};
var a=new A();
alert(a);
Object.prototype.toString=function(){return "Object類"};
alert(a);
A.prototype.toString=function(){return "a類"};
alert(a);
</script>
<script>
function A(){}
var a=new A();
A.prototype.name='hansir';
alert(a.name);
a.name='只讀';
alert(a.name);
</script>
<script>
var a= new Array(1,2,3,4,5);
alert(a);
Object.prototype.toString=function(){return "Object類"};
alert(a);
a.prototype.toString=function(){return "a類"};
alert(a);
</script>
我的理解alert是以toString的方法將里面的對象表現出來,但是第二個改變了toString的方法,對alert沒有影響,后面a沒有prototype的屬性報錯了。對于這個應該怎么理解呢?
a.prototype.toString=function(){return "a類"};
a是對象實例啊
Array.prototype.toString=function(){return "a類"};
================================================
第二個改變了Object 的toString方法,但是call a的toString的時候,沒有到Object的toString,到了Array那里就找到了toString的方法,所以雖然改變了Object的toString,結果仍然不變
忘老大給點指點...