自定义构造函数
自定义构造函数,可以快速创建多个对象,并且代码复用性高。
// 一般为了区分构造函数与普通函数,构造函数名首字母大写
function Student(name,score,code){
this .name = name;
this .score = score;
this .code = code;
}
var stu1 = new Student( '诸葛亮' ,100,1);
var stu2 = new Student( '蔡文姬' ,98,2);
var stu3 = new Student( '张飞' ,68,3);
|
构造函数语法:
- 构造函数名首字母大写;
- 构造函数一般与关键字:
new
一起使用;
- 构造函数一般不需要设置
return
语句,默认返回的是新创建的对象;
this
指向的是新创建的对象。
构造函数的执行过程:
new
关键字,创建一个新的对象,会在内存中开辟一个新的储存空间;
- 让构造函数中的
this
指向新创建的对象;
- 执行构造函数,给新创建的对象进行初始化(赋值);
- 构造函数执行(初始化)完成,会将新创建的对象返回。
构造函数的注意点:
- 构造函数本身也是函数;
- 构造函数有返回值,默认返回的是新创建的对象;
- 但是如果手动添加返回值,添加的是值类型数据的时候,构造函数没有影响。如果添加的是引用类型(数组、对象等)值的时候,会替换掉新创建的对象。
function Dog(){
this .name= "哈士奇" ;
this .age=0.5;
this .watch= function (){
console.log( '汪汪汪,禁止入内' );
}
// return false; 返回值不会改变,还是新创建的对象
// return 123; 返回值不会改变,还是新创建的对象
// return [1,2,3,4,5]; 返回值发生改变,返回的是这个数组
return {aaa: 'bbbb' }; // 返回值发生改变,返回的是这个对象
}
var d1= new Dog(); // 新创建一个对象
console.log(d1);
|
- 构造函数可以当做普通函数执行,里面的
this
指向的是全局对象window
。
function Dog(){
this .name= "husky" ;
this .age=0.5;
this .watch= function (){
console.log( '汪汪汪,禁止入内' );
}
console.log( this ); // window对象
return 1;
}
console.log(Dog()); // 打印 1
|