构造函数与new

构造函数

构造函数就是一个普通的函数,但是具有着自己的特征和用法。

function People(name, age){
  this.name = name
  this.age = age
}  

var man1 = new People('张三',14)  
var man2 = new People('李四',15)
man1.name // ‘张三’
man2.name // ‘李四’

上面代码中,People就是一个构造函数,为了加以区分,通常构造函数名字第一个字母大写。
构造函数的特点:

  • 函数体内使用this关键字,代表了所要生成的对象实例。
  • 生成对象的时候,必须使用new命令。

new

new 命令的作用就是执行构造函数,生成一个实例对象。

function People(name, age){
  this.name = name
  this.age = age
}

var o = new People('张三',20)
o.name // ‘张三’
o.age // ‘20’

new命令原理

  • 创建一个空对象,作为将要返回的对象实例。
  • 将这个空对象的原型指向构造函数的prototype属性。
  • 将这个空对象赋值给函数内部的this关键字。
  • 执行构造函数内部代码。

如果构造函数内部有return语句,return语句后面如果是一个对象,new命令会返回return后面的指定对象;如果不是对象,那么始终返回this对象。

new命令始终返回一个对象,要么是return指定对象,要么就是实例对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容