在vanilla JavaScript中是否有像prototype.toArray这样的函数?

时间:2014-02-10 15:32:10

标签: javascript arrays string class object

我想更改使用以下代码从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();

1 个答案:

答案 0 :(得分:5)

valueOf只能转换为原始值并返回原始值,因此您无法强制它返回Array。您可以尝试使用JSON.Stringify返回JSON字符串,稍后可以在 1 上对其进行解析。另请参阅this articleMDN 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]}"