详解JavaScript如何设置私有属性

 更新时间:2024年03月24日 16:42:57   作者:zbsnzj  
这篇文章主要为大家详细介绍了在JavaScript中如何设置私有属性,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

ES6之前的私有属性模拟

1、构造函数形式创建对象

function Person(name) {
  let _name = name; // 私有属性
 
  this.getName = function() {
    return _name;
  };
 
  this.setName = function(newName) {
    _name = newName;
  };
}
 
let person = new Person('Alice');
console.log(person.getName()); // Alice
person.setName('Bob');
console.log(person.getName()); // Bob
// console.log(person._name); // 这会报错,因为_name是私有的

在这个例子中,_name是一个私有属性,因为它是在函数作用域内定义的,外部无法直接访问。

2、字面量形式创建对象

let obj = (function() {
  let privateVar = 'I am private';
 
  return {
    publicMethod: function() {
      console.log(privateVar);
    }
  };
})();
 
obj.publicMethod(); // 正确访问私有变量
// console.log(obj.privateVar ); // 这会报错,因为privatVvar是私有的

在这个例子中,privatVvar是一个真正的私有变量,因为它是在一个立即执行函数表达式(IFEe)的作用域内定义的,外部代码无法直接访问。我们通过返回的对象中的publiMmethod方法来暴露对privatVvar的访问。

ES6中创建私有属性

class Person {
  #name; // 私有属性
 
  constructor(name) {
    this.#name = name;
  }
 
  getName() {
    return this.#name;
  }
 
  setName(newName) {
    this.#name = newName;
  }
}
 
let person = new Person('Alice');
console.log(person.getName()); // Alice
person.setName('Bob');
console.log(person.getName()); // Bob
// console.log(person.#name); // 这会报错,因为#name是私有的

私有属性的好处

私有属性有以下好处:

1.封装性:私有属性可以隐藏类的内部实现细节,只暴露必要的接口给外部使用。

2.安全性:防止外部代码随意修改类的内部状态,可能导致错误或不一致的状态。

3.维护性:当类的内部实现发生变化时,只要保持接口不变,就不会影响到使用该类的其他代码。

到此这篇关于详解JavaScript如何设置私有属性的文章就介绍到这了,更多相关JavaScript设置私有属性内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • js 编码转换 gb2312 和 utf8 互转的2种方法

    js 编码转换 gb2312 和 utf8 互转的2种方法

    这篇文章介绍了gb2312 和 utf8 互转的JS方法,有需要的朋友可以参考一下
    2013-08-08
  • js left,right,mid函数

    js left,right,mid函数

    在JAVASCRIPT中LEFT,RIGHT,MID函数的等价函数,非常适合经常用写asp的朋友
    2008-06-06
  • 微信小程序中this.data与this.setData的区别详解

    微信小程序中this.data与this.setData的区别详解

    这篇文章主要给大家介绍了关于微信小程序中this.data与this.setData区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-09-09
  • 小程序实现订单倒计时功能

    小程序实现订单倒计时功能

    这篇文章主要为大家详细介绍了小程序实现订单倒计时功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • JS得到当前时间的方法示例

    JS得到当前时间的方法示例

    这篇文章主要介绍了JS得到当前时间的方法,结合具体实例形式对比分析了javascript获取日期时间的相关操作技巧,需要的朋友可以参考下
    2017-03-03
  • 基于Leaflet的Webgis经纬网格功能实现

    基于Leaflet的Webgis经纬网格功能实现

    本文将介绍一款Leaflet的经纬网插件,基于这款经纬网插件,详细介绍如何实现经纬网功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2023-12-12
  • JavaScript订单操作小程序完整版

    JavaScript订单操作小程序完整版

    这篇文章主要介绍了JavaScript订单操作小程序完整版,增加订单,删除订单,修改订单数量,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 简单js代码实现selece二级联动(推荐)

    简单js代码实现selece二级联动(推荐)

    这篇文章主要介绍了简单js代码实现selece二级联动的简单实例。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • JS触发服务器控件的单击事件(详解)

    JS触发服务器控件的单击事件(详解)

    下面小编就为大家带来一篇JS触发服务器控件的单击事件(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Java File类的常用方法总结

    Java File类的常用方法总结

    这篇文章主要介绍了Java File类的常用方法总结,本文讲解了File类的常用方法,并对一些方法给出了代码示例,需要的朋友可以参考下
    2015-03-03

最新评论

?


http://www.vxiaotou.com