class中实例方法
class Person{
name="wzk";
age =18;//设置实例的默认属性
sex = 'male';
//方法就是值为函数的特殊属性
//定义方法的三种形式1
getSex = function(){
return this.sex;
}
//定义方法的三种形式2
getName=()=>{
return this.name;
}
//定义方法的三种形式3
getAge(){
return this.age;
}
constructor(age,name){
this.age=age||this.age;//必须这样写
this.name=name||this.name//实例属性
}
}
const p1 = new Person();
const p2 = new Person()
console.log(p1.getSex===p2.getSex);//false
console.log(p1.getName===p2.getName);//false
console.log(p1.getAge===p2.getAge);//true
同样是实例的方法为什么一个是false,一个是true;是不是在类中建议用
getAge(){
return this.age;
}
这种形式定义实例的方法,其他方式会占内存
正在回答 回答被采纳积分+1
同学你好,问题解答如下:
1、前两种方式定义的方法,是和前面属性(name、age、sex)定义方式一样,它是实例上的属性。实例属性在类实例化的时候,相当于复制一份给实例对象。所以两个实例对象上的属性和方法虽然一样,但是不是同一份数据,所以比较时不相等。
2、而最后一种方式定义的方法,是类原型上的方法。当实例化的时候,实例化对象的原型会指向类的原型,即原型的数据是共享的。两个实例对象上的getAge指向的都是类原型上的getAge,所以比较时是相等的。
3、是的,前两种方式占用内存。定义方法时,建议在类的原型上定义(即使用上图第三种方法)。因为方法都是共用的,放在原型上更节约内存。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星