Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我对Object.assign()使用原语时,结果显示为空对象_Javascript - Fatal编程技术网

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))//输出:{}
是,超过第一个参数的每个参数都将被转换,但原语在默认情况下没有任何可枚举的自身属性:

  • 让from成为对象(nextSource)
  • 让密钥来自[OwnPropertyKeys]
  • (迭代键,将它们指定给第一个参数对象)
  • (您可以在某些原语上访问的属性要么在原型上,要么不是自己的键(如
    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我明白了。谢谢:)