1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-29 22:12:21 +00:00

docs(object): edit object

This commit is contained in:
ruanyf 2017-01-07 13:31:27 +08:00
parent a8cb58ba96
commit e1abf373a3
2 changed files with 33 additions and 20 deletions

View File

@ -784,16 +784,16 @@ foo.name // "foo"
需要注意的是ES6 对这个属性的行为做出了一些修改。如果将一个匿名函数赋值给一个变量ES5 的`name`属性,会返回空字符串,而 ES6 的`name`属性会返回实际的函数名。
```javascript
var func1 = function () {};
var f = function () {};
// ES5
func1.name // ""
f.name // ""
// ES6
func1.name // "func1"
f.name // "f"
```
上面代码中,变量`func1`等于一个匿名函数ES5和ES6的`name`属性返回的值不一样。
上面代码中,变量`f`等于一个匿名函数ES5 ES6 `name`属性返回的值不一样。
如果将一个具名函数赋值给一个变量,则 ES5 和 ES6 的`name`属性都返回这个具名函数原本的名字。
@ -807,13 +807,13 @@ bar.name // "baz"
bar.name // "baz"
```
`Function`构造函数返回的函数实例,`name`属性的值为“anonymous”
`Function`构造函数返回的函数实例,`name`属性的值为`anonymous`
```javascript
(new Function).name // "anonymous"
```
`bind`返回的函数,`name`属性值会加上“bound ”前缀。
`bind`返回的函数,`name`属性值会加上`bound `前缀。
```javascript
function foo() {};

View File

@ -244,22 +244,35 @@ myObject // Object {[object Object]: "valueB"}
函数的`name`属性,返回函数名。对象方法也是函数,因此也有`name`属性。
```javascript
var person = {
const person = {
sayName() {
console.log(this.name);
},
get firstName() {
return "Nicholas";
}
};
person.sayName.name // "sayName"
person.firstName.name // "get firstName"
```
上面代码中,方法的`name`属性返回函数名(即方法名)。如果使用了取值函数,则会在方法名前加上`get`。如果是存值函数,方法名的前面会加上`set`
上面代码中,方法的`name`属性返回函数名(即方法名)。
有两种特殊情况:`bind`方法创造的函数,`name`属性返回“bound”加上原函数的名字`Function`构造函数创造的函数,`name`属性返回“anonymous”。
如果对象的方法使用了取值函数(`getter`)和存值函数(`setter`),则`name`属性不是在该方法上面,而是该方法的属性的描述对象的`get``set`属性上面,返回值是方法名前加上`get``set`
```javascript
const obj = {
get foo() {},
set foo(x) {}
};
obj.foo.name
// TypeError: Cannot read property 'name' of undefined
const descriptor = Object.getOwnPropertyDescriptor(o, 'foo');
descriptor.get.name // "get foo"
descriptor.set.name // "set foo"
```
有两种特殊情况:`bind`方法创造的函数,`name`属性返回`bound`加上原函数的名字;`Function`构造函数创造的函数,`name`属性返回`anonymous`
```javascript
(new Function()).name // "anonymous"