ES5 构造函数 当new完一个构造函数对象后都发生了什么?

创建对象可以通过三种方式:

1.对象字面量 var obj1 = {};
2.var obj2 = new Object()
3.自定义构造函数 function funcName () {}

构造函数是一种特殊的函数,主要用来初始化对象,即 为对象成员变量赋初始值,它总与new一起使用。我们可以把对象中一些公共属性和方法抽取出来,然后封装到这个函数里面。


当new完一个构造函数对象后都发生了什么?

1.首先会先创造一个空的对象
2.让构造函数里面的this指向这个新的对象
3.执行构造函数里面的代码,给这个新对象添加属性和方法。
4.返回这个新对象,所以构造函数里面不需要return。

实例成员:就是【构造函数内部】通过【this】添加的成员 实例成员只能通过【实例化的对象】来访问。liudehua.uname

function Star(age,uname){
  this.age = age;
  this.sing = function(){
      xxxx
  }
}
var liudehua = new  Star('刘德华',18); 

静态成员:在【构造函数本身】添加的成员 Star.funcName = "xxx"; funcName就是静态成员
静态成员那只能通过【构造函数】来访问 Star.xxx

构造函数的一个缺陷,就是浪费内存, 虽然函数方法是一样的但是他们的内存地址是不同的,也就是说一人开辟了一个内存空间,开了两个。
ES5 构造函数 当new完一个构造函数对象后都发生了什么?_第1张图片
image.png

这就需要引入构造函数原型prototype的概念了 下一篇会有介绍

你可能感兴趣的:(ES5 构造函数 当new完一个构造函数对象后都发生了什么?)