#利用toString做類型判斷
toString()在哪?
```
var arr = [];
alert( arr.toString ); // function toString() { [native code] }
function Aaa(){
}
var a1 = new Aaa();
alert( a1.toString ); // function toString() { [native code] }
```
通過下面的例子可以看出,系統對象下面toString是自帶的,自定義對象下面toString則是通過原型鏈找Object對象
```
var arr = [];
alert( arr.toString == Object.prototype.toString ); // false
function Aaa(){
}
var a1 = new Aaa();
alert( a1.toString == Object.prototype.toString ); // true
```
toString()作用:把對象轉成字符串
```
var arr = [1,2,3];
alert( typeof arr.toString() ); // string
alert( arr.toString() ); // 1,2,3
```
按照自定義規則將對象轉成字符串
```
var arr = [1,2,3];
Array.prototype.toString = function(){
return this.join('+');
};
alert( typeof arr.toString() ); // string
alert( arr.toString() ); // 1+2+3
```
進制轉換
```
var num = 255;
alert( num.toString(16) ); // 將255轉成16進制 ff
```
利用toString做類型判斷 (推薦使用這種方法來做類型判斷)
```
var arr = [];
alert( Object.prototype.toString.call(arr) ); // [object Array]
alert( Object.prototype.toString.call(arr) == '[object Array]' ); // true
```
通過constructor和instanceof也可以用來做類型判斷,在大多數情況下是沒有問題的,可以在一些特殊情況下這兩種方法就會失效,如下:
```
window.onload = function(){
var oF = document.createElement('iframe');
document.body.appendChild( oF );
var ifArray = window.frames[0].Array;
var arr = new ifArray();
alert( arr.constructor == Array ); // false
alert( arr instanceof Array); // false
alert( Object.prototype.toString.call(arr) == '[object Array]' ); // true
};
```
- 01 JS面向對象及組件開發
- 02 傳統的過程式編寫選項卡
- 03 用面向對象封裝通用選項卡
- 04 控制多個選項卡自動播放
- 05 用面向對象編寫拖拽
- 06 JS面向對象及組件開發
- 07 hasOwnProperty和constructor的使用
- 08 instanceof運算符的使用
- 09 利用toString做類型判斷
- 10 什么是面向對象的繼承
- 11 面向對象之拷貝繼承
- 12 編寫繼承的拖拽
- 13 繼承的其他形式之類式繼承
- 14 繼承的其他形式之原型繼承
- 15 組件開發是什么
- 16 給拖拽組件配置不同參數
- 17 封裝彈框組件
- 18 使用對象標記已彈出彈框
- 19 復雜組件開發之自定義事件
- 20 原生JS實現自定義事件
- 21 自定義事件實例
- 22 基于JQ的選項卡組件開發