执行以下程序,会抛出语法错误的式子是()
var s = Symbol('key'); ...①
console.log(s + '123'); ...②
var obj = {
[s]:function(){console.log(1);} ...③
}
var b = Reflect.ownKeys(obj); ...④
A
①
B
②
C
③
D
④
正确答案:B
Symbol是不完整的构造函数,创建symbol对象时不需要new操作符,①式不会抛出异常,A选项不符合题意;
symbol对象不能用于数据运算,包括+、-、*、/等,②式会抛出异常,B选项符合题意;
symbol对象的唯一作用是作为对象的属性名,这样可以防止属性因重名而覆盖,使用时必须用[],③式不会抛出异常,C选项不符合题意;
使用Reflect.ownKeys()可以遍历对象的属性,包括symbol属性,④式不会抛出异常,D选项不符合题意。
Symbol 本质上是一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。
注意事项
Symbol值不能与其他类型的值进行运算
Symbol 值不可以和其他类型值进行混合运算,否则会报错
Symbol 值如果想要作为属性名,那就不能再用点运算符,因为点运算符后面跟的总是字符串
在对象内部使用Symbol 值作为属性名的时候,必须要将值放在方括号中
Symbol 值不能与其他类型的值进行运算,会报错。
新的API:Reflect.ownKeys() 方法可以返回所有类型的键名,包括常规键名和 Symbol 键名。
标签:题意,对象,symbol,属性,Symbol,运算 From: https://www.cnblogs.com/longmo666/p/17835037.html