在javascript中,对象转换成基本数据类型或者字符串用到了tostring() 方法和alueof()方法。
将对象转换成字符串时:
1.调用对象的tostring()方法,将对象转换成返回的字符串,如果方法返回其它基本数据类型,则会自动转换成字符串;
2.如果对象没有tostring()方法,或方法返回的不是基本数据类型,那么以相同方式调用valueof()方法;
3.同样,如果valueof()方法不存在或者返回值不是基本数据类型,则提示错误(ie可能不会报错);
js代码
//自定义函数(类)
function myobject(objectname)
{
this.objectname = objectname;
}
var myobj = new myobject("myobj");
//正常情况,首先调用tostring()方法
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return 321;};
alert(myobj); //结果为123
//tostring()方法返回不正确类型,调用valueof()方法
myobject.prototype.tostring = function(){return new date();};
myobject.prototype.valueof = function(){return 321;};
alert(myobj); //结果为321
//tostring()方法不存在,valueof()方法返回不正确类型
myobject.prototype.tostring = undefined;
myobject.prototype.valueof = function(){return new date();};
alert(myobj); //提示错误(ie8中不报错并提示[object])
//自定义函数(类)
function myobject(objectname)
{
this.objectname = objectname;
}
var myobj = new myobject("myobj");
//正常情况,首先调用tostring()方法
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return 321;};
alert(myobj); //结果为123
//tostring()方法返回不正确类型,调用valueof()方法
myobject.prototype.tostring = function(){return new date();};
myobject.prototype.valueof = function(){return 321;};
alert(myobj); //结果为321
//tostring()方法不存在,valueof()方法返回不正确类型
myobject.prototype.tostring = undefined;
myobject.prototype.valueof = function(){return new date();};
alert(myobj); //提示错误(ie8中不报错并提示[object])
类似的,将对象转换成基本数据类型时也会作相应处理,但是会先调用valueof() 函数而不是tostring()。
将对象转换成基本数据类型时:
1.调用对象的valueof() 方法,将对象转换成返回的基本数据类型;
2.如果对象没有valueof() 方法,或方法返回的不是基本数据类型,那么以相同方式调用tostring()方法;
3.同样,如果tostring()方法不存在或者返回值不是基本数据类型,则提示错误;
js代码
//自定义函数(类)
function myobject(objectname)
{
this.objectname = objectname;
}
var myobj = new myobject("myobj");
//正常情况,首先调用valueof()方法
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return 321;};
alert(myobj*2); //结果为642
//valueof()方法返回不正确类型,调用tostring()方法
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return new date();};
alert(myobj*2); //结果为246
//tostring()方法不存在,valueof()方法返回不正确类型
myobject.prototype.tostring = undefined;
myobject.prototype.valueof = function(){return new date();};
alert(myobj*2); //提示错误
//自定义函数(类)
function myobject(objectname)
{
this.objectname = objectname;
}
var myobj = new myobject("myobj");
//正常情况,首先调用valueof()方法
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return 321;};
alert(myobj*2); //结果为642
//valueof()方法返回不正确类型,调用tostring()方法
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return new date();};
alert(myobj*2); //结果为246
//tostring()方法不存在,valueof()方法返回不正确类型
myobject.prototype.tostring = undefined;
myobject.prototype.valueof = function(){return new date();};
alert(myobj*2); //提示错误
当对象操作设计“+”运算符时就要特别注意,因为“+”既能进行算数操作,也能进行字符串拼接操作。
1.当“+”的两个操作数有对象类型时,先把对象根据上面的规则转换成基本数据类型;
2.转换完的两个操作数如果有一个是字符串类型的,则把另一个操作数转换成字符串;
3.否则,把两个操作数都转换成数值类型(或nan),进行相加操作。
js代码
//自定义函数(类)
function myobject(objectname)
{
this.objectname = objectname;
}
var myobj = new myobject("myobj");
//正常情况,首先调用valueof()方法,返回数字
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return 321;};
alert(myobj + 1); //结果为322(数值相加)
alert(myobj + "1"); //结果为3211(字符串拼接)
//正常情况,首先调用valueof()方法,返回字符串
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return "321";};
alert(myobj + 1); //结果为3211(字符串拼接)
alert(myobj + "1"); //结果为3211(字符串拼接)
//valueof()方法返回不正确类型,调用tostring()方法,返回字符串
myobject.prototype.tostring = function(){return "123";};
myobject.prototype.valueof = function(){return new date();};
alert(myobj + 1); //结果为1231(字符串拼接)
alert(myobj + "1"); //结果为1231(字符串拼接)
//tostring()方法不存在,valueof()方法返回不正确类型
myobject.prototype.tostring = undefined;
myobject.prototype.valueof = function(){return new date();};
alert(myobj + 1); //提示错误(ie8不报错,并提示undefined)
alert(myobj + "1"); //提示错误(ie8不报错,并提示undefined)
//自定义函数(类)
function myobject(objectname)
{
this.objectname = objectname;
}
var myobj = new myobject("myobj");
www.2cto.com
//正常情况,首先调用valueof()方法,返回数字
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return 321;};
alert(myobj + 1); //结果为322(数值相加)
alert(myobj + "1"); //结果为3211(字符串拼接)
//正常情况,首先调用valueof()方法,返回字符串
myobject.prototype.tostring = function(){return 123;};
myobject.prototype.valueof = function(){return "321";};
alert(myobj + 1); //结果为3211(字符串拼接)
alert(myobj + "1"); //结果为3211(字符串拼接)
//valueof()方法返回不正确类型,调用tostring()方法,返回字符串
myobject.prototype.tostring = function(){return "123";};
myobject.prototype.valueof = function(){return new date();};
alert(myobj + 1); //结果为1231(字符串拼接)
alert(myobj + "1"); //结果为1231(字符串拼接)
//tostring()方法不存在,valueof()方法返回不正确类型
myobject.prototype.tostring = undefined;
myobject.prototype.valueof = function(){return new date();};
alert(myobj + 1); //提示错误(ie8不报错,并提示undefined)
alert(myobj + "1"); //提示错误(ie8不报错,并提示undefined)
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号