#利用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的选项卡组件开发