This commit is contained in:
qianguyihao
2019-06-01 19:04:38 +08:00
parent 8504557d8a
commit 3d97313732
7 changed files with 195 additions and 13 deletions

View File

@@ -30,8 +30,8 @@
### 方式一:字面量
```javascript
var obj11 = {name: 'smyh'};
var obj12 = new Object(name: `smyh`); //内置对象(内置的构造函数)
var obj11 = {name: 'qianguyihao'};
var obj12 = new Object(name: 'qianguyihao'); //内置对象(内置的构造函数)
```
上面的两种写法,效果是一样的。因为,第一种写法,`obj11`会指向`Object`
@@ -87,7 +87,7 @@ PS任何一个函数如果在前面加了new那就是构造函数。
this.name = name;
}
var fn = new Foo('smyhvae');
var foo = new Foo('smyhvae');
```
上面的代码中,`Foo.prototype.constructor === Foo`的结果是`true`
@@ -95,7 +95,7 @@ PS任何一个函数如果在前面加了new那就是构造函数。
![](http://img.smyhvae.com/20180306_2120.png)
- 4、实例的`__proto__`指向原型。也就是说,`Foo.__proto__ === M.prototype`
- 4、实例的`__proto__`指向原型。也就是说,`foo.__proto__ === Foo.prototype`
声明:所有的**引用类型**(数组、对象、函数)都有`__proto__`这个属性。
@@ -137,7 +137,7 @@ Object是原型链的顶端。
比如说:
- `foo instance of Foo`的结果为true因为`foo.__proto__ === M.prototype`为true。
- `foo instance of Foo`的结果为true因为`foo.__proto__ === Foo.prototype`为true。
- **`foo instance of Objecet`的结果也为true**,因为`Foo.prototype.__proto__ === Object.prototype`为true。
@@ -150,7 +150,7 @@ Object是原型链的顶端。
分析:这就要用到原型的`constructor`属性了。
- `foo.__proto__.constructor === M`的结果为true但是 `foo.__proto__.constructor === Object`的结果为false。
- `foo.__proto__.constructor === Foo`的结果为true但是 `foo.__proto__.constructor === Object`的结果为false。
所以,用 consturctor判断就比用 instanceof判断更为严谨。
@@ -176,7 +176,6 @@ Object是原型链的顶端。
```javascript