object.valueOf()
返回值:返回該物件的原始值。var o = new Date(); //物件範例 console.log(o.toString()); //返回當前時間的UTC字串 console.log(o.valueOf()); //返回距離1970年1月1日午夜之間的毫秒數 console.log(Object.prototype.valueOf.apply(o)); //預設返回當前時間的UTC字串當 String、Number 和 Boolean 物件具有明顯的原始值時,它們的 valueOf() 原型方法會返回合適的原始值。
function Point (x, y) { //自定義資料型別 this.x = x; this.y = y; } Point.prototype.valueOf = function () { //自定義Point資料型別的valueOf()原型方法 return "(" + this.x + "," + this.y + ")"; } var p = new Point(26, 68); console.log(p.valueOf()); //返回當前物件的值"(26,68)" console.log(Object.prototype.valueOf.apply(p)); //預設返回值為"[object Object]"在特定環境下進行資料型別轉換時(如把物件轉換為字串),valueOf() 原型方法的優先順序要比 toString() 方法的優先順序高。因此,如果一個物件的 valueOf() 原型方法返回值和 toString() 方法返回值不同,且希望轉換的字串為 toString() 方法的返回值時,就必須明確呼叫物件的 toString() 方法。
function Point (x, y) { //自定義資料型別 this.x = x; this.y = y; } Point.prototype.valueOf = function () { //自定義Point資料型別的valueOf()方法 return "(" + this.x + "," + this.y + ")"; } Point.prototype.toString = function () { //自定義Point資料型別的toString()方法 return "[object Point]"; } var p = new Point(26,68); //範例化物件 console.log("typeof p = " + p); //預設呼叫valueOf()方法進行型別轉換 console.log("typeof p = " + p.toString()); //直接呼叫toString()方法進行型別轉換