第56页 toString和valueOf
- 章节名:toString和valueOf
- 页码:第56页
1. js中对象到字符串的转换经过了如下这些步骤 如果对象具有toString方法,则调用这个方法,如果它返回一个原始值,js将这个值转换为字符串,如果对象没有toString方法或者返回的不是原始值,则调用它的valueOf方法,如果存在这个方法,则调用它,如果它返回的是原始值则将这个值转换成字符串,否则如果不是原始值则抛出一个类型错误异常 2.在对象到数字的转换过程中,js做了同样的事情,只是它会首先尝试使用valueOf方法 3. function Money(gold, silver, coin) { this.gold = gold; this.silver = silver; this.coin = coin; } Money.parse = function(value) { var coin = parseInt(value % 25); var silver = parseInt(value / 25 % 20); var gold = parseInt(value / 500); return new Money(gold, silver, coin); } Money.prototype.valueOf = function() { alert("valueof"); return ((this.gold * 20) + this.silver) * 25 + this.coin; } Money.prototype.toString = function() { alert("tostring"); return this.gold + "两黄金," + this.silver + "两白银," + this.coin + "文钱"; } var money1 = new Money(5, 6, 1); var money2 = new Money(2, 4, 6); var money3 = Money.parse(money1 + money2); alert(money3); //结果 valueof valueof tostring 7两黄金,10两白银,7文钱 说明:这里隐式调用了valueOf跟toString,二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。比如 money1 + money2,调用的就是两者valueOf之后的值相加,而alert的时候,把money3先toString了一下。
浪花对本书的所有笔记 · · · · · ·
-
第591页 详解Javascript中的Url编码/解码
foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/ \________/\___...
-
第500页 eval的用法
1.eval方法是有返回值的,如果参数字符串是一个表达式,就返回表达式的值,如果不是,则返回u...
-
第56页 toString和valueOf
-
第114页 严格模式 user strict
1.进入"严格模式"的标志:“use strict”;老浏览器会把它当作字符串忽略 2."严格模式"有两种...
-
第190页 函数
1.bind()方法是es5新增的方法,但在es3中可以轻易模拟bind,作用是将函数绑定到某个对象,当...
说明 · · · · · ·
表示其中内容是对原文的摘抄