构造函数(面向对象---封装)

this的三种指向:

1 object.function() //function里面this指向object

2 function() //function里面的this指向window

3 new function() //function里面的this指向new,new开辟了一块新空间,相当于new做主语调用了funcition--->可认为是new.function

对象的三种创建方法:

1 var obj={}

2 var obj=new object(); obj.属性名=值";

3 var obj=new function(实参);

当需要创建多个结构相同的对象时,用构造函数

eg: function Emp($name,$age){

    this.name=$name;this.age=$age;

    this.intro=function(){console.log(`I'm ${this.name},I'm${this.age}`);}

}

var caiBiBa=new Emp("caiBiBa",18);

var Tdog=new Emp("Tdog",20);

/*此时的执行顺序为:

1.Emp,caiBiBa,Tdog申明提前

2.new一个新空间(新地址)

3.Emp()执行,生成scope chain,local为变量$name,$age,这两局部变量从实参得来(this.name,this.age这样有.的不是变量,而是对象里的属性值)

4.this指向的是new,此时在new的空间里强行创建属性名name和age,值为实参

5.function(){}意思是创建函数(没有()就只是创建的意思),并把函数名强行放进new空间里,因为函数是引用类型,所以new空间里的intro保存函数地址

6.把结果的新地址给caiBiBa */

你可能感兴趣的:(构造函数(面向对象---封装))