Uint16Array不是String.fromCharCode.apply的有效参数
Uint16Array not a valid argument for String.fromCharCode.apply
我在数组缓冲区和字符串之间转换的单元测试中遇到了一个奇怪的问题。
这段代码取自:http://updates.html5rocks.com/2012/06/How-to-convert-ArrayBuffer-to-and-from-String。适用于此小提琴:http://jsfiddle.net/W3DH9/
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
function str2ab(str) {
var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
alert(ab2str(str2ab('foo')));
我实现了代码,并用jasmine为它编写了一个单元测试。这里我得到一个奇怪的错误,说TypeError: '[object Uint16Array]' is not a valid argument for 'Function.prototype.apply' (evaluating 'new Uint16Array(buf)')
我正在运行PhantomJS 1.9.7和Node v0.10.22
如果我把它记录到控制台,它是Object{prototype: Object{subarray: function subarray() { ... }, BYTES_PER_ELEMENT: 2, set: function set() { ... }}, BYTES_PER_ELEMENT: 2}
我的Chrome浏览器在本地代码中实现了这个函数。
似乎String.fromCharCode
不能应用于数组类对象
这是由于PhantomJS中的一个错误:
见https://github.com/ariya/phantomjs/issues/11172
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 什么's是调用具有可变参数的函数的有效方法
- 为什么传入的参数在一个地方有效,而在另一个地方不起作用
- 这是有效的 js 参数吗?
- 有效记忆对象参数
- 函数中的参数即使不是isset,仍然有效
- 检查对象参数是否具有所有必需属性的最有效方法是什么
- 如何有效地调试方法链接函数参数
- Facebook营销API:参数必须是一个有效的Instagram帐户id
- 创建函数到参数映射的最有效方法是什么?
- Uint16Array不是String.fromCharCode.apply的有效参数
- 无参数连接是否有效
- 新建Firebase失败:第一个参数必须是有效的Firebase URL,且路径不能包含"."、&q
- 检查js函数的所有参数是否为非空,最有效/最常见的方法是什么
- Firebase 3-fetchProviderForEmail失败:第一个参数“”;电子邮件”;必须是有效的字符串
- 作为 element.contains() 的参数输入的有效属性是什么
- Jsdoc有效的参数类型