2011-10-26 72 views
3

我有以下幾點:覆蓋的toString()投票,對單個陣列對象

var version = [0,3,0]; 

// Override the version toString method. 
version.__proto__.toString = function() { 
    return this.join('.'); 
}; 

後者執行以下步驟

version.toString => '0.3.0' 

JSLint的呻吟聲是__proto__是保留名稱 - 這是正確的。

我假設我錯誤地重載了。

我不想

Array.prototype.toString 

爲將覆蓋所有的陣列來代替,用?

+1

'[] .__原__的toString === Array.prototype.toString'。 – katspaugh

+1

@katspaugh - 屬性'\ _ \ _ proto \ _ \ _'是不可改變的,但'prototype'是。在某些情況下,你的比較並不總是必須的。有些JavaScript主動使用此行爲(例如ExtJS) – Tim

+0

@Tim,不知道,謝謝! – katspaugh

回答

13

只需設置直接在陣列上的方法:

var version = [0,3,0]; 

// Override the version toString method. 
version.toString = function() { 
    return this.join('.'); 
}; 
+1

謝謝。讓自己變得複雜起來! –