相关疑难解决方法(0)

为什么扩展本机对象是一种不好的做法?

每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?

TJ Holowaychukshould.js为例.他增加了一个简单的getterObject,一切工作正常(来源).

Object.defineProperty(Object.prototype, 'should', {
  set: function(){},
  get: function(){
    return new Assertion(Object(this).valueOf());
  },
  configurable: true
});
Run Code Online (Sandbox Code Playgroud)

这真的很有道理.例如,可以扩展Array.

Array.defineProperty(Array.prototype, "remove", {
  set: function(){},
  get: function(){
    return removeArrayElement.bind(this);
  }
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)

是否有任何反对扩展本机类型的论据?

javascript prototype prototypal-inheritance

121
推荐指数
7
解决办法
3万
查看次数

在javascript中将字节数组转换为字符串

如何将字节数组转换为字符串?

我发现这些功能正好相反:

function string2Bin(s) {
    var b = new Array();
    var last = s.length;

    for (var i = 0; i < last; i++) {
        var d = s.charCodeAt(i);
        if (d < 128)
            b[i] = dec2Bin(d);
        else {
            var c = s.charAt(i);
            alert(c + ' is NOT an ASCII character');
            b[i] = -1;
        }
    }
    return b;
}

function dec2Bin(d) {
    var b = '';

    for (var i = 0; i < 8; i++) {
        b = (d%2) + b;
        d …
Run Code Online (Sandbox Code Playgroud)

javascript casting

69
推荐指数
6
解决办法
17万
查看次数

如何在 utf-16 中编码 JavaScript 字符串?

在 Python 3 中,我可以这样做:

>>> "€13,56".encode('utf-16')
b'\xff\xfe\xac 1\x003\x00,\x005\x006\x00'
Run Code Online (Sandbox Code Playgroud)

输入是一个(unicode)字符串,而输出是该字符串以 utf-16 编码的原始字节序列。

我怎样才能在 JavaScript 中做同样的事情——从一个(unicode)字符串,到一个Uint8Array以 utf-16 编码的字符串的原始字节序列(也许是一个?)?

javascript unicode encoding utf-16

6
推荐指数
1
解决办法
2万
查看次数

在 React Native 中将图像转换为 Base64

我已经使用了react-native-image-picker,现在我从照片库中选择图像。要将图像发送到 API,我必须首先将其转换为 Base64,然后转换为字节数组。我的文件路径位于response.uri 中。我该怎么做?

当我执行 console.log(response) 时,我得到了这个结果

'Response = ', {
  fileSize: 6581432,
  longitude: -17.548928333333333,
  uri: 'file:///Users/shubhamb/Library/Developer/CoreSimulator/Devices/B58314DF-F0A9-48D2-B68A-984A02271B72/data/Containers/Data/Application/63143214-8A03-4AC8-A79C-42EC9B82E841/tmp/2AACBC57-0C07-4C98-985E-154668E6A384.jpg',
  fileName: 'IMG_0003.JPG',
  latitude: 65.682895,
  origURL: 'assets-library://asset/asset.JPG?id=9F983DBA-EC35-42B8-8773-B597CF782EDD&ext=JPG',
  type: 'image/jpeg',
  height: 2002,
  width: 3000,
  timestamp: '2012-08-08T18:52:11Z',
  isVertical: false,
}

Run Code Online (Sandbox Code Playgroud)

react-native react-native-image-picker

6
推荐指数
2
解决办法
2万
查看次数

NodeJs 相当于 Java getBytes()

我需要在 NodeJs 中执行 Java 函数。

string.getBytes()
Run Code Online (Sandbox Code Playgroud)

在 Java 中,这会将字符串转换为字节数组byte[]

javascript java node.js

4
推荐指数
1
解决办法
1万
查看次数

如何在React Native中将字符串转换为字节数组?

我知道这个问题以不同的方式提出,但我找不到适合本地反应的正确答案......

如何将字符串转换为字节数组我本机反应?

例如我希望这个函数是这样的:

StringToByteArray('你好')

输出应该是这样的: [72,0,101,0,108,0,108,0,111,0]

我一直在看这篇文章,但答案似乎不正确或无效......

converters react-native

4
推荐指数
1
解决办法
1万
查看次数

如何在浏览器环境中获取 JavaScript 中数字和字符串的实际大小(以字节为单位)?

我试图在浏览器(例如 Chrome)中获取数字和字符串的实际大小(以字节为单位)。

我了解到,在 JavaScript 中,数字以双精度表示,占用 64 位,而字符串是 UTF-16 代码单元,因此需要 2 个字节或 4 个字节。

我第一次尝试使用new Blob,但它将字符串组成字符编码为 UTF-8 而不是 UTF-16。我知道 Node 中有一个Buffer.fromAPI,但它在浏览器环境中不可用。

我的问题是如何从浏览器(例如 Chrome)获取数字和字符串的实际大小(以字节为单位)?

javascript google-chrome node.js

4
推荐指数
1
解决办法
2444
查看次数

Javascript:创建UTF-16文本文件?

我有一些字符串需要是一个UTF-16文本文件.例如:

var s = "aosjdfkzlzkdoaslckjznx";
var file = "data:text/plain;base64," + btoa(s);
Run Code Online (Sandbox Code Playgroud)

这将导致UTF-8编码文本文件.如何获得带字符串的UTF-16文本文件s

javascript utf-16

1
推荐指数
1
解决办法
1947
查看次数

C#版的javascript函数btoa

我需要重新编写从js到c#的东西,利用js中的btoa方法对一串unicode字符进行转换,将它们转换为base64.但是,据我所知,javascrpt使用的编码与c#中可用的编码不同.我需要编码完全相同,并且不会在这些语言中返回不同的值.我已经尝试设置一个nodejs服务器并向它发出get请求,以便以这种方式运行编码,但这太慢而且不稳定.我的印象是我需要创建自己的编码表,但我不知道从哪里开始或如何实现它.如果有人可以提供帮助,那将非常感激.

tl; dr:javascript的btoa返回的值不同于c#中的base 64编码.我需要它是相同的价值观.

代码和输出:

c#:
String fromChar = new 
String(247,71,186,8,125,72,2,1.0078125,0.003936767578125);
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(fromChar);
Console.WriteLine(System.Convert.ToBase64String(plainTextBytes));

output = w7dHwroIfUgCAQA=


javascript:
var x = btoa(String.fromCharCode(247,71,186,8,125,72,2,1.0078125,0.003936767578125);
console.log(x)

output = 
90e6CH1IAgEA
Run Code Online (Sandbox Code Playgroud)

我知道前一个例子使用utf8编码,而js没有,问题是.net中没有与javascript编码匹配的编码.

编辑:试图比较c#和javascript的字节数组,但问题是btoa函数使用了一个未命名的编码,所以我实际上无法获得字节来打印它的字节数组而不假设它是像utf8那样的不是.

.net javascript c# node.js

1
推荐指数
1
解决办法
3987
查看次数