因为我没有声明this._name
为属性,所以这不会引发错误吗?为什么会自动创建?
ps ***如果this.name和this._name是不同的属性,由于this.name在声明后未更改,它不应该打印Tom / Tom / Tom吗?
class Person{
constructor(name){
this.name=name;
}
get name(){
return this._name;
}
set name(value){
this._name=value;
}
sayName(){
console.log(this.name);
}
}
var person=new Person("Tom");//TOM
console.log(person.name);
person.name="Huck";
console.log(person.name);//Huck
person.sayName();//Huck
因为在您的构造函数中进行设置this.name
,但name
实际上用于设置的设置器_name
。因此,不会,它不会自动创建-JavaScript对象在不存在该属性时创建该属性是正常行为。即使已经存在,逻辑也一样-考虑一下。如果您有一条if
要检查的语句是否存在,它将是什么样?这个:
if (this._name) this._name = value;
else this._name = value;
实际上,发生的任何事情都没有区别,因为访问未定义的属性会返回undefined
而不是引发错误-如果有帮助,您可以认为它存在,而仅仅是undefined
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句