一、综合分析和toString方法Javascript(推荐)
valueOf()方法的Javascript
valueOf()方法返回布尔对象的原始值。
使用booleanobject.valueof(),返回值的booleanobject原布尔值。如果对象调用的方法不是布尔,TypeError抛出的异常。
新布尔(false);
(boo.valueof document.write());
上面的脚本将输出false。
toString()方法的Javascript
toString()方法可以将逻辑值转换为字符串并返回结果。
的booleanobject.tostring()使用,并返回值返回字符串真或假在原有基础上的booleanobject布尔值或对象的值。如果对象调用的方法不是布尔,TypeError抛出的异常。
当字符串环境中使用布尔对象时,将自动调用此方法。
下面的脚本将创建一个布尔对象并将其转换为字符串:
新布尔(true);
(boo.tostring document.write());
脚本输出:真。
首先看一个例子:
var
I:10,
值:函数(){退货。我+ 30;},
说明:函数(){ return this.valueof()+ 10;}
}
警报(AAA > 20)
警报(+ AAA);40
警报(AAA);50
有这样的结果,因为他们偷偷打电话给值或toString方法。但如何区分哪些方法被调用时,我们可以用另一种方式测试它。因为对console.log使用,请实验在Firebug的FF!
var = {
I:10,
说明:函数(){
console.log('tostring);
把这个还给我;
},
值:函数(){
console.log('valueof);
把这个还给我;
}
}
警报(BBB); / /日期10
警报(+ BBB); / /值10
警报('' + BBB); / /值10
警报(字符串(BBB)); / /日期10
警报(数(BBB)); / /值10
警报(BBB = = 10'); / /真值
警报(BBB = 10'); / /假
乍一看,最常见的感觉是,如果我们调用toString方法当我们转换为一个字符串,如果我们将其转换为数字值,称为我们的价值的方法,但是其中的两个非常不和谐。一是警惕('' + BBB),和字符串拼贴应该叫做toString方法…另一个时刻我们可以理解=操作符不隐式转换,所以不要给他们打电话。为了查明真相,我们需要更严谨的实验。
var
I:10,
说明:函数(){
console.log('tostring);
把这个还给我;
}
}
警报(AA); / /日期10
警报(AA); / /日期10
警报('' + AA); / /日期10
警报(字符串(AA)); / /日期10
警报(数(AA)); / /日期10
警报(AA = = 10'); / /真正的toString
再看价值。
var
I:10,
值:函数(){
console.log('valueof);
把这个还给我;
}
}
警报(bb);{对象对象}
警报(+ BB); / /值10
警报('' + BB); / /值10
警报(字符串(BB));{对象对象}
警报(号(BB)); / /值10
警报(BB = = 10'); / /真值
这个发现有点不同,对吧它没有统一的toString以上,{物},我应该继承的对象,然后我们会再拿出来。
object.prototype.tostring = null;
var
I:10,
值:函数(){
console.log('valueof);
把这个还给我;
}
}
警报(CC); / /值10
警报(+ CC); / /值10
警报('' + CC); / /值10
警报(字符串(CC)); / /值10
警报(数(CC)); / /值10
警报(CC = = 10'); / /真值
如果是重写ToString,对象的变换时将忽略对象进行转换,然而,如果valueOf方法是重写,valueOf方法优先当转换成一个字符串。当你不能调用ToString方法,你只能得到价值的发挥,奇怪的字符串拼接。的问题,这可能是ecma262-5发现都是操作的操作员,然后谜应该发现。重写会增加他们的调用优化,在运营商的情况下,该值比toString优先级更高。
以上是对于整个描述和toString方法通过Javascript在Xiaobian介绍,希望能对你有帮助。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。