为什么自动创建以“ _”开头的属性?

J

因为我没有声明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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么NgModelController属性/方法以$开头

基于id的XPath属性值以什么开头?

这些以双连字符开头的CSS属性是什么?

为什么在创建数组时需要逗号开头?

为什么在打开Word文档时创建以〜$开头的文件?

只能设置带有getter的自动属性,为什么?

为什么Clang自动向我的函数添加属性?

为什么从异步函数返回的对象上自动访问“ then”属性?

如何创建基于以“_”开头的属性名称将所有类属性设置为不可枚举的 Typescript 装饰器?

自动创建的对象的属性

为什么(复制的非原子的)NSMutableArray属性创建NSArrays?

为什么嵌套属性的验证在创建时不起作用?

创建类属性的哪种方法更好,为什么?

为什么要自动创建状态?(redux)

为什么更改组件属性的值会自动更改相应的服务属性?

为什么在文件开头出现连字符?

为什么“ she-bang”以“#!”开头?

为什么JavaScript需要以“;”开头?

StringComparison,为什么“ TH”不以“ T”开头

为什么以负数开头的范围不会迭代?

为什么这些字符打印在 putStrLn 的开头

为什么http.Client {}以&开头?

为什么主干网址以问号开头?

为什么matplotlib子图以1开头

为什么在EditText的开头有额外的空间

为什么硬盘标签以C而不是A开头?

为什么最小宽度属性会破坏此CSS动画无限自动播放轮播?

Java为什么没有像C#这样的自动属性?

为什么我会在只读字段上选择私有只读自动属性?