Object | prototype | constructor | hasOwnProperty |
isPrototypeOf | propertyIsEnumerable | toLocaleString | toString |
valueOf |
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
可增加物件的特徵與方法。
- 程式用法:
<script type='text/javascript'>
Object.prototype.triple=function (){ return this*3;};
document.write( o.triple() );
</script> - 執行結果:
67.5
存有產生物件實體的函式其位置。繼承自 Function 的特徵。
- 程式用法:
<script type='text/javascript'>
document.write( o.constructor );
</script> - 執行結果:
function String() { [native code] }
檢查物件是否直接擁有一個特徵,回傳布林值。此方法不會向下檢查繼承鏈。
- 程式用法:
<script type='text/javascript'>
o.myProperty='新的';
document.write( o.hasOwnProperty('myProperty') +'<br />');
document.write( o.hasOwnProperty('constructor') );
</script> - 執行結果:
true
false
- 上例中,constructor 是繼承自 Function 的特徵,不是直接的特徵。
檢查一個物件是否存在另一個物件的繼承鏈之中,回傳布林值。
- 程式用法:
<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() 這個方法。
檢查物件的一個特徵,是否可以用在 for( in ) 迴圈(不包括繼承的特徵),回傳布林值。
- 程式用法:
<script type='text/javascript'>
document.write( o.propertyIsEnumerable('myProperty') +'<br />');
document.write( o.propertyIsEnumerable('constructor') );
</script> - 執行結果:
true
false
此方法呼用 toString(),可以改寫成有地區特色的方法。例如物件 Date 就改寫此方法。
- 程式用法:
<script type='text/javascript'>
document.write( o.toLocaleString() );
</script> - 執行結果:
22.5
將物件實體轉成字串。
- 程式用法:
<script type='text/javascript'>
document.write( o.toString() );
</script> - 執行結果:
22.5
傳回物件實體的基本值。可以直接使用物件實體名稱不加 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]