gpt4 book ai didi

javascript - 为什么 Object.assign() 拆分字符串并创建具有多个键的对象?

转载 作者:行者123 更新时间:2023-11-29 18:43:10 25 4
gpt4 key购买 nike

如果 string literal传递给 Object.assign() , 它将创建一个 object有多个keys像这个例子:

var v1 = 'myTest';
var obj = Object.assign({}, v1);
console.log(obj);

这背后的原因是什么,而不是返回{0:'myTest'}

最佳答案

来自MDN

The Object.assign() method is used to copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.

因此,字符串文字 v1 将被强制转换为一个 object 以使该方法起作用。当字符串文字被强制转换为 object 时,String()使用构造函数,您将得到一个具有数字属性的对象,类似于数组(具有长度属性和索引元素的对象),但不是数组,即, 实际上和你做的一样 new String(v1):

let v1 = "myString";
let obj = new String(v1);
console.log(obj);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

你没有得到一个数组:

只是为了澄清,您从 string 字面量中获得的强制 object 是一个array-like 对象,但不是 一个 array,正如您在下一个使用 Array.isArray() 的测试中看到的那样做检查:

let v1 = "myString";

let strObj = new String(v1);
console.log(Array.isArray(strObj));

let arr = v1.split("");
console.log(Array.isArray(arr));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

要了解更多关于 array-like 对象和数组的区别,也许你可以阅读下一个链接:

JavaScript - Difference between Array and Array-like object

关于javascript - 为什么 Object.assign() 拆分字符串并创建具有多个键的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55638735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com