< 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(
' 執行方法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(
' 執行方法key: ' ? + ?(o[key])())
?}
?
}
?
alert(o);
alert(?
new ??Date());
?
// ?-->?
? </ SCRIPT > ?

看以上兩段代碼,估計很多人對后面的代碼熟悉,也這樣寫了??伤麄儓绦薪Y果是一樣的。如果你改變了javascript對象的原型對象后會有些區別。
在這我想提出以下幾個問題:
??? a、javascript對象也是單根繼承的對象.但不是所有對象都繼承自Object.如例子中的Date對象。
??? b、千萬別亂定義Object.prototype原型對象。prototype.js中加了個extends被人說了半天。但我們自己寫類庫時,千萬別嘗試改Object的prototype。
??? c、別用javacript語言模仿java來寫代碼。想上面的,需要一個person的“類”,并不是非需要定義一個,注意javascript對象的屬性是可以隨意增加或刪除的。并不象java那樣在類中寫死。
??? d、就上面兩段代碼有什么區別呢?可以簡單的說是person繼承了Object”類“。javascript中對象的繼承是用prototype來實現的,后面我們討論prototype原型對象。
??? e、那我們應用的時候到底是否該自己定義自己的構造函數(如person),還是直接使用Object呢?這是個復雜的問題,我個人來說喜歡多用Object.