new 的作用
1 | function Test(name){ |
从代码中我们可以知道,new的作用
- 通过构造函数Test创建出来的实例可以访问到构造函数中的属性
- 通过构造函数Test创建出来的实例可以访问到构造函数原型链中的属性,也就是说通过new操作符实例与构造函数通过原型链连接了起来
构造函数返回原始值
1 | function Test(name) { |
构造函数如果返回原始值(虽然例子中只有返回了 1,但是你可以试试其他的原始值,结果还是一样的),那么这个返回值毫无意义
构造函数返回对象
1 | function Test(name) { |
构造函数如果返回值为对象,那么这个返回值会被正常使用
自己实现 new 操作符
####首先我们再来回顾下 new 操作符的几个作用
- new 操作符会返回一个对象,所以我们需要在内部创建一个对象
- 这个对象,也就是构造函数中的 this,可以访问到挂载在 this 上的任意属性
- 这个对象可以访问到构造函数原型上的属性,所以需要将对象与构造函数链接起来
- 返回原始值需要忽略,返回对象需要正常处理
1 | //首先函数接受不定量的参数,第一个参数为构造函数,接下来的参数被构造函数使用 |
测试
1 | function Test(name, age) { |