3 回答

TA貢獻(xiàn)2080條經(jīng)驗 獲得超4個贊
一般情況下未暴露到全局的變量都很難被修改。你可以考慮大量使用閉包來封裝數(shù)據(jù)。從服務(wù)器獲取數(shù)據(jù)的代碼和獲得的數(shù)據(jù)放在一個閉包中也是改不了的……但是仍有兩種情況可以修改
監(jiān)聽 Ajax 請求過程,可以使用某些工具直接修改 HTTP 的返回結(jié)果。雖然可以考慮對數(shù)據(jù)加密,但是由于解密程序在客戶端而且沒有編譯成二進(jìn)制,要解密并修改數(shù)據(jù)也還是可以做到的。
直接進(jìn)入開發(fā)者工具,在源文件上打斷點,也是可以修改的……
所以,實際上目前是沒有比較安全的辦法。以后 WebAssembly 廣泛之后可能會好一點。

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊
你在構(gòu)建函數(shù)里寫的變量如果不設(shè)在this
上,就無法在外面修改,如下:
class Vehicle {
constructor(type) {
this.type = type;
// private屬性
let speed = 10;
this.getSpeed = () => speed;
}
}
const vehicle = new Vehicle('Test');
vehicle.type = 'Hello' //=> 沒問題
vehicle.speed = 15; //=> 不會改構(gòu)建函數(shù)里的`speed`
vehicle.getSpeed(); //=> 10
設(shè)在this
的屬性都是public的,構(gòu)建函數(shù)里的let
, var
和const
都無法在外面修改。
添加回答
舉報