mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-28 21:32:20 +00:00
edit symbol
This commit is contained in:
parent
77503618e3
commit
86eca41818
@ -581,16 +581,14 @@ function passthru(literals) {
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
msg
|
||||
// "The total is 30 (31.5 with tax)"
|
||||
msg // "The total is 30 (31.5 with tax)"
|
||||
```
|
||||
|
||||
上面这个例子展示了,如何将各个参数按照原来的位置拼合回去。
|
||||
|
||||
passthru函数采用rest参数的写法如下。
|
||||
`passthru`函数采用rest参数的写法如下。
|
||||
|
||||
```javascript
|
||||
function passthru(literals, ...values) {
|
||||
|
@ -17,9 +17,9 @@ typeof s
|
||||
|
||||
上面代码中,变量`s`就是一个独一无二的值。`typeof`运算符的结果,表明变量`s`是Symbol数据类型,而不是字符串之类的其他类型。
|
||||
|
||||
注意,Symbol函数前不能使用`new`命令,否则会报错。这是因为生成的Symbol是一个原始类型的值,不是对象。也就是说,由于Symbol值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。
|
||||
注意,`Symbol`函数前不能使用`new`命令,否则会报错。这是因为生成的Symbol是一个原始类型的值,不是对象。也就是说,由于Symbol值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。
|
||||
|
||||
Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。
|
||||
`Symbol`函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分。
|
||||
|
||||
```javascript
|
||||
var s1 = Symbol('foo');
|
||||
@ -34,7 +34,7 @@ s2.toString() // "Symbol(bar)"
|
||||
|
||||
上面代码中,`s1`和`s2`是两个Symbol值。如果不加参数,它们在控制台的输出都是`Symbol()`,不利于区分。有了参数以后,就等于为它们加上了描述,输出的时候就能够分清,到底是哪一个值。
|
||||
|
||||
注意,Symbol函数的参数只是表示对当前Symbol值的描述,因此相同参数的Symbol函数的返回值是不相等的。
|
||||
注意,`Symbol`函数的参数只是表示对当前Symbol值的描述,因此相同参数的`Symbol`函数的返回值是不相等的。
|
||||
|
||||
```javascript
|
||||
// 没有参数的情况
|
||||
@ -50,7 +50,7 @@ var s2 = Symbol("foo");
|
||||
s1 === s2 // false
|
||||
```
|
||||
|
||||
上面代码中,`s1`和`s2`都是Symbol函数的返回值,而且参数相同,但是它们是不相等的。
|
||||
上面代码中,`s1`和`s2`都是`Symbol`函数的返回值,而且参数相同,但是它们是不相等的。
|
||||
|
||||
Symbol值不能与其他类型的值进行运算,会报错。
|
||||
|
||||
@ -63,7 +63,7 @@ var sym = Symbol('My symbol');
|
||||
// TypeError: can't convert symbol to string
|
||||
```
|
||||
|
||||
但是,Symbol值可以转为字符串。
|
||||
但是,Symbol值可以显式转为字符串。
|
||||
|
||||
```javascript
|
||||
var sym = Symbol('My symbol');
|
||||
@ -96,7 +96,7 @@ Object.defineProperty(a, mySymbol, { value: 'Hello!' });
|
||||
a[mySymbol] // "Hello!"
|
||||
```
|
||||
|
||||
上面代码通过方括号结构和Object.defineProperty,将对象的属性名指定为一个Symbol值。
|
||||
上面代码通过方括号结构和`Object.defineProperty`,将对象的属性名指定为一个Symbol值。
|
||||
|
||||
注意,Symbol值作为对象属性名时,不能用点运算符。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user