toString()

原文地址

toString() 方法可把 Date数据对象转换为字符串,并返回结果

可知js这中的Date类型存在六种:分为undefined;null;Boolean;number;String和object型。在这六种中,undefined和null两种没有.toString(),如果写了会报错。

Boolean:会根据其var变量内容返回true or flase两种。
示例:var num1=false;document.write(num1.toString()+"</br>");
结果:flase;

number:.toString()括号内可以带有一个参数(2~36【0到9和26个英文字母】),表示数值所转化的进制,默认为10进制。
示例:

var num2=18;
document.write("数值为:"+num2+"</br>");
document.write("二进制:"+num2.toString(2)+"</br>");
document.write("八进制:"+num2.toString(8)+"</br>");
document.write("十进制:"+num2.toString()+"</br>");
document.write("十六进制:"+num2.toString(16)+"</br>");

结果:
数值为:18
二进制:10010
八进制:22
十进制:18
十六进制:12

String就不用说了。。。。

object:首先得说明object数据类型本身具有内置的.toString(),如果直接的object.toString(),都会得到个相同的结果-----[object Object] 。
示例:

function Dog(name,sex,color){
    this.name=name;
    this.sex=sex;
    this.color=color;
}
 
var dog=new Dog("jack","female","black");
document.write( dog.toString());

所以我们可以利用prototype属性(翻译:原型),改变其内置自带的.toString()方法。
示例:

function Dog(name,sex,color){
    this.name=name;
    this.sex=sex;
    this.color=color;
}
Dog.prototype.toString=function dogtoString(){
    var ret="This is a named "+this.name+" "+this.color+" "+this.sex+" dog";
    return ret;
}
var dog=new Dog("jack","female","black");
document.write(dog.toString());

结果;
This is a named jack black female dog

顺带说一句:prototype属性允许开发者往对象中添加/修改属性和方法
示例代码:

function Dog(name,sex,color){
    this.name=name;
    this.sex=sex;
    this.color=color;
}
//修改方法
Dog.prototype.toString=function dogtoString(){
    var ret="This is a named "+this.name+" "+this.color+" "+this.sex+" dog";
    return ret;
}
//添加方法
Dog.prototype.togaga=function gaga(){
    return "The method I added!";
}
//添加属性
Dog.prototype.breed=null;
var dog=new Dog("jack","female","black");
dog.breed="breed";
document.write(dog.breed+"</br>");
document.write(dog.toString()+"</br>");
document.write(dog.togaga());

结果:

breed
This is a named jack black female dog
The method I added!

 

当需要判断数据类型的时候可以用 Object.prototype.toString.call(param);
Object原型上的toString方法;使用call方法可以修改toString方法内部的this指向,将this指向为call里面的第一个参数;

var bool = true;
Object.prototype.toString.call(bool);
"[object Boolean]"
var str = 'hello world';
Object.prototype.toString.call(str);
"[object String]"
var num = 123;
Object.prototype.toString.call(num);
"[object Number]"
var arr = [1,2,3];
Object.prototype.toString.call(arr);
"[object Array]"
var fn = function(){};
Object.prototype.toString.call(fn);
"[object Function]"
var obj = {a:1};
Object.prototype.toString.call(obj);
"[object Object]"

 

posted @ 2019-09-30 14:24  一抹夏忧☆  阅读(755)  评论(0编辑  收藏  举报