欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解JavaScript如何設(shè)置私有屬性

 更新時(shí)間:2024年03月24日 16:42:57   作者:zbsnzj  
這篇文章主要為大家詳細(xì)介紹了在JavaScript中如何設(shè)置私有屬性,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下

ES6之前的私有屬性模擬

1、構(gòu)造函數(shù)形式創(chuàng)建對象

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); // 這會(huì)報(bào)錯(cuò),因?yàn)開name是私有的

在這個(gè)例子中,_name是一個(gè)私有屬性,因?yàn)樗窃诤瘮?shù)作用域內(nèi)定義的,外部無法直接訪問。

2、字面量形式創(chuàng)建對象

let obj = (function() {
  let privateVar = 'I am private';
 
  return {
    publicMethod: function() {
      console.log(privateVar);
    }
  };
})();
 
obj.publicMethod(); // 正確訪問私有變量
// console.log(obj.privateVar ); // 這會(huì)報(bào)錯(cuò),因?yàn)閜rivatVvar是私有的

在這個(gè)例子中,privatVvar是一個(gè)真正的私有變量,因?yàn)樗窃谝粋€(gè)立即執(zhí)行函數(shù)表達(dá)式(IFEe)的作用域內(nèi)定義的,外部代碼無法直接訪問。我們通過返回的對象中的publiMmethod方法來暴露對privatVvar的訪問。

ES6中創(chuàng)建私有屬性

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); // 這會(huì)報(bào)錯(cuò),因?yàn)?name是私有的

私有屬性的好處

私有屬性有以下好處:

1.封裝性:私有屬性可以隱藏類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),只暴露必要的接口給外部使用。

2.安全性:防止外部代碼隨意修改類的內(nèi)部狀態(tài),可能導(dǎo)致錯(cuò)誤或不一致的狀態(tài)。

3.維護(hù)性:當(dāng)類的內(nèi)部實(shí)現(xiàn)發(fā)生變化時(shí),只要保持接口不變,就不會(huì)影響到使用該類的其他代碼。

到此這篇關(guān)于詳解JavaScript如何設(shè)置私有屬性的文章就介紹到這了,更多相關(guān)JavaScript設(shè)置私有屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論