我想更改使用以下代码从JavaScript对象返回的值:
F.prototype.valueOf = function(){return "foo";}
F.prototype.toString = Id.valueOf();
“F”是JavaScript类,“foo”是我要返回的字符串。 调用类似的警报时,这样可以正常工作:
alert(F()); //alerts foo
但有没有办法,对象的值可以是一个数组?也许像是
F.prototype.valueOf = function(){return ["foo", "bar"];}
F.prototype.toArray = Id.valueOf();
答案 0 :(得分:5)
valueOf
只能转换为原始值并返回原始值,因此您无法强制它返回Array
。您可以尝试使用JSON.Stringify
返回JSON字符串,稍后可以在 1 上对其进行解析。另请参阅this article或MDN documentation。
你当然也可以写一个自定义的'getter'函数来检索你的自定义valueOf,如:
F.prototype.getValue = function() {return ['foo', 'bar']};
1 例如
var someobj = {
bar: 1, some: [1,2,3],
x: 'string', foo:[{a:1,b:2},2,3],
valueOf: function(){return JSON.stringify(this);}
};
someobj.valueOf();
//=> "{"bar":1,"some":[1,2,3],"x":"string","foo":[{"a":1,"b":2},2,3]}"