老师实例属性这里不明白
来源:3-4 项目作业
WYW265672
2022-05-23 22:10:11
class People2 { // 实例属性 name='GG'; age=18; // 实例方法:不共享 sleep=function() { console.log(`💤`); } // 需要传参的属性 constructor(sex,age) { this.sex=sex; this.age = age; } // class 的方法要写在construtor外面,生成共享的方法 speak() { console.log(`${this.name}说话了`); } } const zs=new People2('female',1); // 只有constructor里面没写的属性,在constructor上面写才有用,不然就用constructor里面定义的属性值,没传参就是undefined也不用上面写的值 console.log(zs.sex,zs.age, zs.name); // female undefined GG zs.sleep(); // 💤 const ls=new People2('male',2); console.log(ls.sleep===zs.sleep); // false 不共享的方法,不好 console.log(ls.speak===zs.speak); // true 共享的
1、constructor外层的实例属性的意义是什么?说是默认值可是一但constructor里面规定了同名的属性,那外层实例属性就不管用了啊,不传参就是undefined,要这个外层实例属性干嘛
2、sleep 和speak方法一个有等号一个没等号,sleep这样写就不共享了,实际应用中是不是根本不会这样写的
1回答
好帮手慕慕子
2022-05-24
同学你好,对于你的问题解答如下:
1、constructor外层的实例属性的意义主要是设置实例属性的默认值,该值是固定的。一般不会设置与constructor中的属性同名,如果同名了,完全可以不用设置外层的实例属性,直接通过传参来设置属性值即可。
2、实际应用中确实很少会这样写,但是不排除会遇到有这种特殊需求的情况,掌握两者的区别,实际开发中,要是真的遇到了,灵活应用所学知识就可以。
祝学习愉快~
相似问题