Skip to content

Commit cce2da1

Browse files
committed
docs(oop/object): edit Object.create()
1 parent aaa117a commit cce2da1

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

docs/oop/object.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ F.call(f);
6262

6363
生成实例对象的常用方法是,使用`new`命令让构造函数返回一个实例。但是很多时候,只能拿到一个实例对象,它可能根本不是由构建函数生成的,那么能不能从一个实例对象,生成另一个实例对象呢?
6464

65-
JavaScript 提供了`Object.create`方法,用来满足这种需求。该方法接受一个对象作为参数,然后以它为原型,返回一个实例对象。该实例完全继承原型对象的属性。
65+
JavaScript 提供了`Object.create()`方法,用来满足这种需求。该方法接受一个对象作为参数,然后以它为原型,返回一个实例对象。该实例完全继承原型对象的属性。
6666

6767
```javascript
6868
// 原型对象
@@ -80,9 +80,9 @@ B.print() // hello
8080
B.print === A.print // true
8181
```
8282

83-
上面代码中,`Object.create`方法以`A`对象为原型,生成了`B`对象。`B`继承了`A`的所有属性和方法。
83+
上面代码中,`Object.create()`方法以`A`对象为原型,生成了`B`对象。`B`继承了`A`的所有属性和方法。
8484

85-
实际上,`Object.create`方法可以用下面的代码代替。
85+
实际上,`Object.create()`方法可以用下面的代码代替。
8686

8787
```javascript
8888
if (typeof Object.create !== 'function') {
@@ -94,7 +94,7 @@ if (typeof Object.create !== 'function') {
9494
}
9595
```
9696

97-
上面代码表明,`Object.create`方法的实质是新建一个空的构造函数`F`,然后让`F.prototype`属性指向参数对象`obj`,最后返回一个`F`的实例,从而实现让该实例继承`obj`的属性。
97+
上面代码表明,`Object.create()`方法的实质是新建一个空的构造函数`F`,然后让`F.prototype`属性指向参数对象`obj`,最后返回一个`F`的实例,从而实现让该实例继承`obj`的属性。
9898

9999
下面三种方式生成的新对象是等价的。
100100

@@ -104,7 +104,7 @@ var obj2 = Object.create(Object.prototype);
104104
var obj3 = new Object();
105105
```
106106

107-
如果想要生成一个不继承任何属性(比如没有`toString``valueOf`方法)的对象,可以将`Object.create`的参数设为`null`
107+
如果想要生成一个不继承任何属性(比如没有`toString()``valueOf()`方法)的对象,可以将`Object.create()`的参数设为`null`
108108

109109
```javascript
110110
var obj = Object.create(null);
@@ -113,9 +113,9 @@ obj.valueOf()
113113
// TypeError: Object [object Object] has no method 'valueOf'
114114
```
115115

116-
上面代码中,对象`obj`的原型是`null`,它就不具备一些定义在`Object.prototype`对象上面的属性,比如`valueOf`方法。
116+
上面代码中,对象`obj`的原型是`null`,它就不具备一些定义在`Object.prototype`对象上面的属性,比如`valueOf()`方法。
117117

118-
使用`Object.create`方法的时候,必须提供对象原型,即参数不能为空,或者不是对象,否则会报错。
118+
使用`Object.create()`方法的时候,必须提供对象原型,即参数不能为空,或者不是对象,否则会报错。
119119

120120
```javascript
121121
Object.create()
@@ -124,7 +124,7 @@ Object.create(123)
124124
// TypeError: Object prototype may only be an Object or null
125125
```
126126

127-
`Object.create`方法生成的新对象,动态继承了原型。在原型上添加或修改任何方法,会立刻反映在新对象之上。
127+
`Object.create()`方法生成的新对象,动态继承了原型。在原型上添加或修改任何方法,会立刻反映在新对象之上。
128128

129129
```javascript
130130
var obj1 = { p: 1 };
@@ -136,7 +136,7 @@ obj2.p // 2
136136

137137
上面代码中,修改对象原型`obj1`会影响到实例对象`obj2`
138138

139-
除了对象的原型,`Object.create`方法还可以接受第二个参数。该参数是一个属性描述对象,它所描述的对象属性,会添加到实例对象,作为该对象自身的属性。
139+
除了对象的原型,`Object.create()`方法还可以接受第二个参数。该参数是一个属性描述对象,它所描述的对象属性,会添加到实例对象,作为该对象自身的属性。
140140

141141
```javascript
142142
var obj = Object.create({}, {
@@ -160,7 +160,7 @@ obj.p1 = 123;
160160
obj.p2 = 'abc';
161161
```
162162

163-
`Object.create`方法生成的对象,继承了它的原型对象的构造函数。
163+
`Object.create()`方法生成的对象,继承了它的原型对象的构造函数。
164164

165165
```javascript
166166
function A() {}

0 commit comments

Comments
 (0)