詳解JavaScript如何設(shè)置私有屬性
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); // 這會報錯,因為_name是私有的
在這個例子中,_name是一個私有屬性,因為它是在函數(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 ); // 這會報錯,因為privatVvar是私有的
在這個例子中,privatVvar是一個真正的私有變量,因為它是在一個立即執(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); // 這會報錯,因為#name是私有的
私有屬性的好處
私有屬性有以下好處:
1.封裝性:私有屬性可以隱藏類的內(nèi)部實現(xiàn)細(xì)節(jié),只暴露必要的接口給外部使用。
2.安全性:防止外部代碼隨意修改類的內(nèi)部狀態(tài),可能導(dǎo)致錯誤或不一致的狀態(tài)。
3.維護(hù)性:當(dāng)類的內(nèi)部實現(xiàn)發(fā)生變化時,只要保持接口不變,就不會影響到使用該類的其他代碼。
到此這篇關(guān)于詳解JavaScript如何設(shè)置私有屬性的文章就介紹到這了,更多相關(guān)JavaScript設(shè)置私有屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于JavaScript實現(xiàn)網(wǎng)頁版羊了個羊游戲
最近羊了個羊火的不得了,這篇文章主要為大家介紹了如何利用JS實現(xiàn)個網(wǎng)頁版羊了個羊游戲,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-09-09bootstrap中模態(tài)框、模態(tài)框的屬性實例詳解
這篇文章主要介紹了bootstrap中模態(tài)框、模態(tài)框的屬性實例詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02