From cd0310c978a3155177322eb5a33eab9109ee039f Mon Sep 17 00:00:00 2001 From: ruanyf Date: Mon, 23 Mar 2020 20:19:08 +0800 Subject: [PATCH] =?UTF-8?q?docs(object):=20=E4=BF=AE=E6=94=B9=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E8=BF=90=E7=AE=97=E7=AC=A6=E8=87=AA=E5=8A=A8=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=8F=96=E5=80=BC=E5=87=BD=E6=95=B0=20get=20=E7=9A=84?= =?UTF-8?q?=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/object.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/object.md b/docs/object.md index f353fef..b8f7511 100644 --- a/docs/object.md +++ b/docs/object.md @@ -693,25 +693,17 @@ const obj = { 扩展运算符的参数对象之中,如果有取值函数`get`,这个函数是会执行的。 ```javascript -// 并不会抛出错误,因为 x 属性只是被定义,但没执行 -let aWithXGetter = { - ...a, +let a = { get x() { throw new Error('not throw yet'); } -}; +} -// 会抛出错误,因为 x 属性被执行了 -let runtimeError = { - ...a, - ...{ - get x() { - throw new Error('throw now'); - } - } -}; +let aWithXGetter = { ...a }; // 报错 ``` +上面例子中,取值函数`get`在扩展`a`对象时会自动执行,导致报错。 + ## 链判断运算符 编程实务中,如果读取对象内部的某个属性,往往需要判断一下该对象是否存在。比如,要读取`message.body.user.firstName`,安全的写法是写成下面这样。