常见问题

  • 创建对象有几种方式
  • 原型、构造函数、实例、原型链
  • instanceOf的原理
  • new运算符背后的工作原理

创建对象的几种方法

通常有三种方法:

1
2
3
4
5
6
7
8
9
10
11
// 对象字面量
var obj1 = { name: 'hello' }
var obj11 = new Object({ name: 'hello' })

// new
var Func = function() { this.name = 'hello' }
var fun = new Func()

// Object.create
var obj2 = { name: 'hello' }
var obj22 = Object.create(obj3)

原型、构造函数、实例、原型链之间的联系

prototype

任何一个函数只要使用了 new 关键字,那么这个函数就变成了构造函数,否则就是普通函数。

构造函数也是函数,函数都有一个 prototype 属性,这个是在函数声明的时候,js引擎自动加上的。就是原型对象。

原型对象中有一个 constructor 指向了构造函数。