2008年12月15日

Object

Object prototype constructor hasOwnProperty
isPrototypeOf propertyIsEnumerable toLocaleString toString
valueOf
new Object( [值] )

Object 產生一個物件,套住參數值,物件的型態與參數相同。如果參數是 null 或 undefined,則產生一個空物件。javascript 的所有物件都繼承源自 Object,所以都繼承了 Object 的特徵與方法,但是有可能被改寫。Object 可以不加 new 使用。

  • 程式用法:

    <script type='text/javascript'>
    var o=Object("22.5");
    document.write( typeof o +' '+ o );
    </script>

  • 執行結果:

    object 22.5

Object 物件的特徵

可增加物件的特徵與方法。

  • 程式用法:

    <script type='text/javascript'>
    Object.prototype.triple=function (){ return this*3;};
    document.write( o.triple() );
    </script>

  • 執行結果:

    67.5

constructor

存有產生物件實體的函式其位置。繼承自 Function 的特徵

  • 程式用法:

    <script type='text/javascript'>
    document.write( o.constructor );
    </script>

  • 執行結果:

    function String() { [native code] }

Object 物件的方法
hasOwnProperty(特徵)

檢查物件是否直接擁有一個特徵,回傳布林值。此方法不會向下檢查繼承鏈。

  • 程式用法:

    <script type='text/javascript'>
    o.myProperty='新的';
    document.write( o.hasOwnProperty('myProperty') +'<br />');
    document.write( o.hasOwnProperty('constructor') );
    </script>

  • 執行結果:

    true
    false

  • 上例中,constructor 是繼承自 Function 的特徵,不是直接的特徵。
isPrototypeOf(物件)

檢查一個物件是否存在另一個物件的繼承鏈之中,回傳布林值。

  • 程式用法:

    <script type='text/javascript'>
    document.write( String.prototype.isPrototypeOf(o) +'<br />');
    document.write( Object.prototype.isPrototypeOf(o) +'<br /><br />');

    var n=new Number('33.5');
    document.write( Number.prototype.isPrototypeOf(n) +'<br />');
    document.write( Object.prototype.isPrototypeOf(n) +'<br />');
    document.write( Function.prototype.isPrototypeOf(n) );
    </script>

  • 執行結果:

    true
    true

    true
    true
    false

  • 上例中,由於 isPrototypeOf() 是 Object 的方法,而 Function 是父,Object 是子,所以 Function 沒有 isPrototypeOf() 這個方法。
propertyIsEnumerable(特徵)

檢查物件的一個特徵,是否可以用在 for( in ) 迴圈(不包括繼承的特徵),回傳布林值。

  • 程式用法:

    <script type='text/javascript'>
    document.write( o.propertyIsEnumerable('myProperty') +'<br />');
    document.write( o.propertyIsEnumerable('constructor') );
    </script>

  • 執行結果:

    true
    false

toLocaleString()

此方法呼用 toString(),可以改寫成有地區特色的方法。例如物件 Date 就改寫此方法。

  • 程式用法:

    <script type='text/javascript'>
    document.write( o.toLocaleString() );
    </script>

  • 執行結果:

    22.5

toString()

將物件實體轉成字串。

  • 程式用法:

    <script type='text/javascript'>
    document.write( o.toString() );
    </script>

  • 執行結果:

    22.5

valueOf()

傳回物件實體的基本值。可以直接使用物件實體名稱不加 valueOf(),就能傳回物件的基本值。如果物件沒有基本值,會回傳 [object Object]。可以改寫此方法以配合需要,系統內建的物件型態都有改寫此方法。

  • 程式用法:

    <script type='text/javascript'>
    document.write( o.valueOf() +'<br />');
    document.write( o +'<br />');
    var empty=Object();
    document.write( empty );
    </script>

  • 執行結果:

    22.5
    22.5
    [object Object]


©2008-2009 by ant2legs, All Rights Reserved. ant2legs 擁有其製作的文章,圖片與程式的著作權,所有權利保留。