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