2011-10-26 40 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

谢谢。让自己变得复杂起来! –