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

Ood*_*Ood 2 javascript arrays string class object

我想更改使用以下代码从JavaScript对象返回的值:

F.prototype.valueOf = function(){return "foo";}
F.prototype.toString = Id.valueOf();
Run Code Online (Sandbox Code Playgroud)

"F"是JavaScript类,"foo"是我要返回的字符串.调用这样的警报时,这样可以正常工作:

alert(F());    //alerts foo
Run Code Online (Sandbox Code Playgroud)

但有没有办法,一个对象的值可以是一个数组?也许是这样的

F.prototype.valueOf = function(){return ["foo", "bar"];}
F.prototype.toArray = Id.valueOf();
Run Code Online (Sandbox Code Playgroud)

Koo*_*Inc 5

valueOf只能转换为原始值并返回原始值,因此不能强制它返回Array.您可以尝试使用JSON.Stringify返回JSON字符串,稍后可以在1上解析.另请参阅本文MDN文档.

你当然也可以编写一个自定义的'getter'函数来检索你的自定义valueOf,例如:

F.prototype.getValue = function() {return ['foo', 'bar']};
Run Code Online (Sandbox Code Playgroud)

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]}"
Run Code Online (Sandbox Code Playgroud)