我想更改从 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();
?
最佳答案
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]}"
关于javascript - 在普通的 JavaScript 中是否有像prototype.toArray 这样的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681311/