constructor方法是类的构造函数的默认方法,通过new命令生成对象实例时,自动调用该方法。
constructor方法如果没有显式定义,会隐式生成一个constructor方法。所以即使你没有添加构造函数,构造函数也是存在的。constructor方法默认返回实例对象this,但是也可以指定constructor方法返回一个全新的对象,让返回的实例对象不是该类的实例。
constructor中定义的属性可以称为实例属性(即定义在this对象上),constructor外声明的属性都是定义在原型上的,可以称为原型属性(即定义在class上)。
class Person{
constructor(name,age){ //constructor是一个构造方法,用来接收参数
this.name = name; //this代表的是实例对象
this.age=age;
}
say(){ //这是一个类的方法,注意千万不要加上function
return "我叫" + this.name+"今年"+this.age+"岁了";
}
}
var obj=new Person("天天",18);
console.log(obj.say()); //我叫天天今年18岁了
Person.prototype.say=function(){ //定义与类中相同名字的方法。成功实现了覆盖!
return "我是来证明的,你叫" + this.name+"今年"+this.age+"岁了";
}
var obj=new Person("天天",38);
console.log(obj.say()); //我是来证明的,你叫天天今年38岁了
Person.prototype.addFn=function(){
return "我是通过prototype新增加的方法,名字叫addFn";
}
var obj=new Person("天天",48);
console.log(obj.addFn()); //我是通过prototype新增加的方法,名字叫addFn
Object.assign(Person.prototype,{
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
})
var obj=new Person("天天",58);
console.log(obj.getName()); //laotie
console.log(obj.getAge()); //88
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。