作家
登录

为什么在JavaScript中使用getter和setter是一个坏主意

作者: 来源: 2017-07-13 12:02:08 阅读 我要评论

'Boris Gorbachev'

什么也没有。对象是可扩大的,可以动态分派键和值,是以不会出缺点在运行时被抛出。

如许的行动意味着缺点可能显示在用户界面上的某个处所,或者,当某些操作被履行在缺点的值上时,而并非是打字缺点的时刻。

跟踪应当产生在以前但却显示在将来的代码流上的缺点是如斯有意思。

seal行不可

这个问题可以经由过程sealAPI来部分化决。只要对象是密封的,它就不克不及突变,也就是意味着fulName将试图分派一个新键到person对象,并且它会掉败。

出于某种原因,当我在Node.js V4.0测试这个的时刻,它没有按照我等待的那样工作。所以,我不克不及确保这个解决筹划。

而更令人沮丧的是,对于setter一点也没有解决办法。正如我前面提到的,对象是可扩大和可故障保护的,这意味着拜访一个不存在的键不会导致任何缺点。

如不雅这种情况只实用于对象的文字的话,我不会画蛇添足地写这篇文┞仿,但在ECMAScript 2015(ES6)和用类定义getter和setter才能的鼓起之后,我决定写下关于潜在陷阱的博客。

我知道当前类在一些JavaScript社区不是异常受迎接。人们对在函数式/基于原型的说话,例如JavaScript中是否须要它们,争执不休。然而,事实是,类就在ECMAScript 2015(ES6)规范解释中,并且将存在于此一段时光。

对我来说,类是指定在类的外部世界(花费者)和应用法度榜样的内部世界之间的定义优胜的API的一种方法。这就是白纸黑字放入规矩的抽象,并且我们假定则些规毫不会很快改变。

改进person对象,做一个它的real类。person定义了接口用于获取和设置fullName。

  1. class Person { 
  2.  
  3.   constructor(firstName, lastName) { 
  4.  
  5.     this.firstName = firstName; 
  6.  
  7.     this.lastName = lastName; 
  8.  
  9.   } 
  10.  
  11.   getFullName() { 
  12.  
  13.     return this.firstName + ' ' + this.lastName; 
  14.  
  15.   } 
  16.  
  17.   setFullName(value) { 
  18.  
  19.     var names = value.split(' '); 
  20.  
  21.     this.firstName = names[0]; 
  22.  
  23.     this.lastName = names[1]; 
  24.  
  25.   } 
  26.  
  27.  

类定义了一个严格的接口描述,但getter和setter办法使其变得不太严格。我们已经习惯了痴肥的缺点,当工作于对象文字和JSON时的键中出现拼写缺点的时刻。我欲望至少类可以或许更严格,并且在这个意义上,供给更好的反馈给开辟人员。

固然这种情况在定义getter和setter在一个类上的时刻没有任何不合。但它不会阻拦任何人拼错。

  1. class Person { 
  2.  
  3.   constructor(firstName, lastName) { 
  4.  
  5.     this.firstName = firstName; 
  6.  
  7.     this.lastName = lastName; 
  8.  
  9.   } 
  10.  
  11.   get fullName() { 
  12.  
  13.     return this.firstName + ' ' + this.lastName; 
  14.  
  15.   } 
  16.  
  17.   set fullName(value) { 
  18.  
  19.     var names = value.split(' '); 
  20.  
  21.     this.firstName = names[0]; 
  22.  

      推荐阅读

      如何改进手上的机器学习模型

    必弗成少的误差来源竽暌冠误差项,任何模型都不克不及够彻底地解决。只有给定问题本身的┞锋实模型和无穷大年夜的数据来修改它,我们可以或许让误差和方差项都变成零。然而,在一个没有完>>>详细阅读


    本文标题:为什么在JavaScript中使用getter和setter是一个坏主意

    地址:http://www.17bianji.com/lsqh/36191.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)