1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

docs(object): edit Object.value()

This commit is contained in:
ruanyf 2016-12-13 19:22:09 +08:00
parent e9fbf72aac
commit 7f0b3fe2f0
4 changed files with 16 additions and 13 deletions

View File

@ -624,9 +624,11 @@ class B {
// B的实例继承A的实例 // B的实例继承A的实例
Object.setPrototypeOf(B.prototype, A.prototype); Object.setPrototypeOf(B.prototype, A.prototype);
const b = new B();
// B继承A的静态属性 // B的实例继承A的静态属性
Object.setPrototypeOf(B, A); Object.setPrototypeOf(B, A);
const b = new B();
``` ```
《对象的扩展》一章给出过`Object.setPrototypeOf`方法的实现。 《对象的扩展》一章给出过`Object.setPrototypeOf`方法的实现。

View File

@ -754,19 +754,19 @@ Object.getPrototypeOf(rec) === Rectangle.prototype
// false // false
``` ```
## Object.values()Object.entries() ## Object.keys()Object.values()Object.entries()
### Object.keys() ### Object.keys()
ES5引入了`Object.keys`方法返回一个数组成员是参数对象自身的不含继承的所有可遍历enumerable属性的键名。 ES5 引入了`Object.keys`方法返回一个数组成员是参数对象自身的不含继承的所有可遍历enumerable属性的键名。
```javascript ```javascript
var obj = { foo: "bar", baz: 42 }; var obj = { foo: 'bar', baz: 42 };
Object.keys(obj) Object.keys(obj)
// ["foo", "baz"] // ["foo", "baz"]
``` ```
目前ES7有一个[提案](https://github.com/tc39/proposal-object-values-entries),引入了跟`Object.keys`配套的`Object.values``Object.entries` ES2017 [引入](https://github.com/tc39/proposal-object-values-entries)了跟`Object.keys`配套的`Object.values``Object.entries`,作为遍历一个对象的补充手段
```javascript ```javascript
let {keys, values, entries} = Object; let {keys, values, entries} = Object;
@ -790,7 +790,7 @@ for (let [key, value] of entries(obj)) {
`Object.values`方法返回一个数组成员是参数对象自身的不含继承的所有可遍历enumerable属性的键值。 `Object.values`方法返回一个数组成员是参数对象自身的不含继承的所有可遍历enumerable属性的键值。
```javascript ```javascript
var obj = { foo: "bar", baz: 42 }; var obj = { foo: 'bar', baz: 42 };
Object.values(obj) Object.values(obj)
// ["bar", 42] // ["bar", 42]
``` ```
@ -812,9 +812,9 @@ var obj = Object.create({}, {p: {value: 42}});
Object.values(obj) // [] Object.values(obj) // []
``` ```
上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的。`Object.values`不会返回这个属性。 上面代码中,`Object.create`方法的第二个参数添加的对象属性(属性`p`),如果不显式声明,默认是不可遍历的,因为`p`是继承的属性,而不是对象自身的属性`Object.values`不会返回这个属性。
`Object.values`会过滤属性名为Symbol值的属性。 `Object.values`会过滤属性名为 Symbol 值的属性。
```javascript ```javascript
Object.values({ [Symbol()]: 123, foo: 'abc' }); Object.values({ [Symbol()]: 123, foo: 'abc' });

View File

@ -355,7 +355,7 @@ someAsyncThing().then(function() {
```javascript ```javascript
var promise = new Promise(function(resolve, reject) { var promise = new Promise(function(resolve, reject) {
resolve("ok"); resolve('ok');
setTimeout(function() { throw new Error('test') }, 0) setTimeout(function() { throw new Error('test') }, 0)
}); });
promise.then(function(value) { console.log(value) }); promise.then(function(value) { console.log(value) });
@ -363,9 +363,9 @@ promise.then(function(value) { console.log(value) });
// Uncaught Error: test // Uncaught Error: test
``` ```
上面代码中Promise指定在下一轮“事件循环”再抛出错误结果由于没有指定使用`try...catch`语句就冒泡到最外层成了未捕获的错误。因为此时Promise的函数体已经运行结束了所以这个错误是在Promise函数体外抛出的。 上面代码中Promise 指定在下一轮“事件循环”再抛出错误,结果由于没有指定使用`try...catch`语句就冒泡到最外层成了未捕获的错误。因为此时Promise的函数体已经运行结束了所以这个错误是在Promise函数体外抛出的。
Node.js有一个`unhandledRejection`事件,专门监听未捕获的`reject`错误。 Node 有一个`unhandledRejection`事件,专门监听未捕获的`reject`错误。
```javascript ```javascript
process.on('unhandledRejection', function (err, p) { process.on('unhandledRejection', function (err, p) {
@ -375,7 +375,7 @@ process.on('unhandledRejection', function (err, p) {
上面代码中,`unhandledRejection`事件的监听函数有两个参数第一个是错误对象第二个是报错的Promise实例它可以用来了解发生错误的环境信息。。 上面代码中,`unhandledRejection`事件的监听函数有两个参数第一个是错误对象第二个是报错的Promise实例它可以用来了解发生错误的环境信息。。
需要注意的是,`catch`方法返回的还是一个Promise对象因此后面还可以接着调用`then`方法。 需要注意的是,`catch`方法返回的还是一个 Promise 对象,因此后面还可以接着调用`then`方法。
```javascript ```javascript
var someAsyncThing = function() { var someAsyncThing = function() {
@ -776,7 +776,7 @@ run(g);
Promise.resolve().then(f) Promise.resolve().then(f)
``` ```
上面的写法有一个缺点,就是如果`f`是同步函数,那么它会在下一轮事件循环执行。 上面的写法有一个缺点,就是如果`f`是同步函数,那么它会在本轮事件循环的末尾执行。
```javascript ```javascript
const f = () => console.log('now'); const f = () => console.log('now');

View File

@ -12,6 +12,7 @@
- [ECMAScript Daily](https://ecmascript-daily.github.io/): TC39委员会的动态 - [ECMAScript Daily](https://ecmascript-daily.github.io/): TC39委员会的动态
- [The TC39 Process](https://tc39.github.io/process-document/): 提案进入正式规格的流程 - [The TC39 Process](https://tc39.github.io/process-document/): 提案进入正式规格的流程
- [TC39: A Process Sketch, Stages 0 and 1](https://thefeedbackloop.xyz/tc39-a-process-sketch-stages-0-and-1/): Stage 0 和 Stage 1 的含义 - [TC39: A Process Sketch, Stages 0 and 1](https://thefeedbackloop.xyz/tc39-a-process-sketch-stages-0-and-1/): Stage 0 和 Stage 1 的含义
- [TC39 Process Sketch, Stage 2](https://thefeedbackloop.xyz/tc39-process-sketch-stage-2/): Stage 2 的含义
## 综合介绍 ## 综合介绍