面向对象--利用toString做类型判断

1. 了解toString

toString() : 系统对象下面都是自带的 , 自己写的对象都是通过原型链找object下面的

解释一下上面这句话,假如是arr的话,则toString在Array.pro下面。假如是a1的话toString在Object.pro下面。

不管是系统对象还是自己写的面向对象,都可以找到toString方法,如下

var arr = [];
alert( arr.toString );//可以找到
alert( arr.toString == Object.prototype.toString ); //false
function Aaa(){}
var a1 = new Aaa();
alert( a1.toString );//可以找到
alert( a1.toString == Object.prototype.toString );  //true

2. toString的作用

toString() : 把对象转成字符串

var arr = [1,2,3];
alert( arr.toString() );  //'1,2,3'

也可以自己重写toString方法

var arr = [1,2,3];
Array.prototype.toString = function(){
    return this.join('+');
};
alert( arr.toString() );  //'1+2+3'

利用toString转成不同进制的数

var num = 255;
alert( num.toString(16) );  //'ff'

利用toString做类型的判断

var arr = [];
alert( Object.prototype.toString.call(arr) == '[object Array]' );  //'[object Array]'

三种判断元素类型的办法比较,最好的是toString。因为如下例子中,其实是跨页面了,前面两种都不能很好的判断,第三种判断正确。


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


};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值