1.对象中 属性对 在 for…in 中是按照什么输出的?(注意:for…in 输出的属性名)
如果是整数字符串,可以直接转换的如‘89’ 但是 ‘+89’ 不是,则按照大小升序排序
如果是非整数字符串则按照创建时序排序,也就是在 js 文件中的顺序
如果是整数字符串 和 非整数字符串 混用则是,先输出整数字符串的属性名,再输出非整数字符串的名字,规则如上。
2.构造器中如果有 return 结果是什么?
- 如果return的是个对象类型,则覆盖this
- 如果return的不是对象类型,则忽略该语句
3.可选链 ?. 不能用在赋值语句的左侧。
person = {
name:"aa"
}
person?.name="bb"
console.log(person)
此处的语义可能是正确的,但是会直接报错
4.隐匿的symbol居然可以被Object.assign发现!!
众所周知,如果用for … in 去查找一个对象里面的属性的时候,会跳过symbol为键的属性,如果用Object.keys去查找也找不到。但是用Object.assign,浅拷贝对象的时候,源对象的symbol类型的属性键名,能被发现并且被复制
5.没看懂的部分:https://zh.javascript.info/object-toprimitive