From 95e2e7921914ed8fc1b961a74578b8e1eab413da Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 9 Apr 2022 20:38:45 +0800 Subject: [PATCH] =?UTF-8?q?docs(object):=20edit=20=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E7=9A=84=E6=89=A9=E5=B1=95=E8=BF=90=E7=AE=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/object.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/object.md b/docs/object.md index 15380aa..bd34647 100644 --- a/docs/object.md +++ b/docs/object.md @@ -606,6 +606,23 @@ foo // {0: "h", 1: "e", 2: "l", 3: "l", 4: "o"} ``` +对象的扩展运算符,只会返回参数对象自身的、可枚举的属性,这一点要特别小心,尤其是用于类的实例对象时。 + +```javascript +class C { + p = 12; + m() {} +} + +let c = new C(); +let clone = { ...c }; + +clone.p; // ok +clone.m(); // 报错 +``` + +上面示例中,`c`是`C`类的实例对象,对其进行扩展运算时,只会返回`c`自身的属性`c.p`,而不会返回`c`的方法`c.m()`,因为这个方法定义在`C`的原型对象上(详见 Class 的章节)。 + 对象的扩展运算符等同于使用`Object.assign()`方法。 ```javascript