构造函数就是初始化一个实例对象,对象的prototype属性是继承一个实例对象。
构造函数注意事项:
1.默认函数首字母大写
2.构造函数并没有显示返回任何东西。new操作符会自动创建给定的类型并返回他们,当调用构造函数时,new会自动创建this对象,且类型就是构造函数类型。
3.也可以在构造函数中显示调用return.如果返回的值是一个对象,它会代替新创建的对象实例返回。如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回。
functionPerson(name){
this.name=name;
}
varp1=newPerson('John');
等同于:
functionperson(name){
Objectobj=newObject();
obj.name=name;
returnobj;
}
varp1=person("John");
构造函数怎么办
1.因为构造函数也是函数,所以可以直接被调用,但是它的返回值为undefine,此时构造函数里面的this对象等于全局this对象。this.name其实就是创建一个全局的变量name。在严格模式下,当你补通过new调用Person构造函数会出现错误。
2.也可以在构造函数中用Object.defineProperty()方法来帮助我们初始化:
functionPerson(name){
Object.defineProperty(this,"name"{
get:function(){
returnname;
},
set:function(newName){
name=newName;
},
enumerable:true,//可枚举,默认为false
configurable:true//可配置
});
}
varp1=newPerson('John')
总之,构造函数给大家简单的介绍了一些,希望大家多看看。