< SCRIPT?LANGUAGE? = ? " ?JavaScript? " > ?
<!-- ?
Object.prototype.toString?
= ?function?()?? {? return ?? ' myToString ' } ?;
?var??o?
= ? new ??Object();
o.name?
= ? ' zkj ' ;
o.age?
= ? 25 ?;
o.desc?
= ?function?()?? {? return ?? ' 姓名: ' ? + ? this ?.name? + ? ' ,年齡: ' ? + ? this ?.age} ?;
?
for ?(?var??key??in??o)?? {
????alert(key?
+ ? ' : ' ? + ?o[key]? + ? ' ?type: ' ? + ?typeof?(o[key]))
??
if ?(?typeof?(o[key])? == ? ' ?function? ' )?? {
????????alert(
' 執(zhí)行方法key: ' ? + ?(o[key])())
?}
?
}
?
alert(o);
alert(?
new ??Date());
?
// ?-->?
? </ SCRIPT > ?????

< SCRIPT?LANGUAGE? = ? " JavaScript " > ?
<!-- ?
?Object.prototype.toString?
= ?function?()?? {? return ?? ' myToString ' } ?;
?function??person()??
{

}
?
?var??o?
= ? new ??person();
o.name?
= ? ' zkj ' ;
o.age?
= ? 25 ?;
o.desc?
= ?function?()?? {? return ?? ' 姓名: ' ? + ? this ?.name? + ? ' ,年齡: ' ? + ? this ?.age} ?;
?
for ?(?var??key??in??o)?? {
????alert(key?
+ ? ' : ' ? + ?o[key]? + ? ' ?type: ' ? + ?typeof?(o[key]))
??
if ?(?typeof?(o[key])? == ? ' ?function? ' )?? {
????????alert(
' 執(zhí)行方法key: ' ? + ?(o[key])())
?}
?
}
?
alert(o);
alert(?
new ??Date());
?
// ?-->?
? </ SCRIPT > ?

看以上兩段代碼,估計(jì)很多人對(duì)后面的代碼熟悉,也這樣寫(xiě)了??伤麄儓?zhí)行結(jié)果是一樣的。如果你改變了javascript對(duì)象的原型對(duì)象后會(huì)有些區(qū)別。
在這我想提出以下幾個(gè)問(wèn)題:
??? a、javascript對(duì)象也是單根繼承的對(duì)象.但不是所有對(duì)象都繼承自O(shè)bject.如例子中的Date對(duì)象。
??? b、千萬(wàn)別亂定義Object.prototype原型對(duì)象。prototype.js中加了個(gè)extends被人說(shuō)了半天。但我們自己寫(xiě)類庫(kù)時(shí),千萬(wàn)別嘗試改Object的prototype。
??? c、別用javacript語(yǔ)言模仿java來(lái)寫(xiě)代碼。想上面的,需要一個(gè)person的“類”,并不是非需要定義一個(gè),注意javascript對(duì)象的屬性是可以隨意增加或刪除的。并不象java那樣在類中寫(xiě)死。
??? d、就上面兩段代碼有什么區(qū)別呢?可以簡(jiǎn)單的說(shuō)是person繼承了Object”類“。javascript中對(duì)象的繼承是用prototype來(lái)實(shí)現(xiàn)的,后面我們討論prototype原型對(duì)象。
??? e、那我們應(yīng)用的時(shí)候到底是否該自己定義自己的構(gòu)造函數(shù)(如person),還是直接使用Object呢?這是個(gè)復(fù)雜的問(wèn)題,我個(gè)人來(lái)說(shuō)喜歡多用Object.