Javascript 当我对Object.assign()使用原语时,结果显示为空对象
我不理解示例中的“原语将被包装到对象”部分 该示例显示原语将被包装,但结果是一个空对象Javascript 当我对Object.assign()使用原语时,结果显示为空对象,javascript,Javascript,我不理解示例中的“原语将被包装到对象”部分 该示例显示原语将被包装,但结果是一个空对象 var v1=true; var v2=10; var v3=符号('foo'); log(Object.assign({},v1,v2,v3))//输出:{}是,超过第一个参数的每个参数都将被转换,但原语在默认情况下没有任何可枚举的自身属性: 让from成为对象(nextSource) 让密钥来自[OwnPropertyKeys] (迭代键,将它们指定给第一个参数对象) (您可以在某些原语上访问的属性要
var v1=true;
var v2=10;
var v3=符号('foo');
log(Object.assign({},v1,v2,v3))//输出:{}
是,超过第一个参数的每个参数都将被转换,但原语在默认情况下没有任何可枚举的自身属性:
toFixed
),要么是不可枚举的(如length
),因此不包括它们)
因此,结果对象没有键值对,因为布尔值、字符串和符号本身都没有任何可枚举的属性
如果显式使用new
并将属性指定给结果包装对象,则会在结果中看到该属性:
var v1=新布尔值(真);//请不要在真实代码中这样做
v1.foo='foo';
var v2=10;
var v3=符号('foo');
log(Object.assign({},v1,v2,v3))
MDN示例说“只有字符串包装器可以拥有自己的可枚举属性。”。但您的回答是“字符串没有任何自己的属性”。这意味着不同的事情吗?还有一个问题。我在Object.assign()中了解到,基元类型无法转换为对象,因为它没有自己的属性。我说的对吗?字符串就像一个字符数组,数组是一个对象,数组的索引是他的键。因此,因为这样,字符串可以有自己的可枚举属性。示例var s='abc';console.log(s[0])
@EduardoGarcia我明白了。谢谢:)