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]"