3 回答

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

TA貢獻1934條經驗 獲得超2個贊
你在構建函數里寫的變量如果不設在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; //=> 不會改構建函數里的`speed`
vehicle.getSpeed(); //=> 10
設在this
的屬性都是public的,構建函數里的let
, var
和const
都無法在外面修改。
添加回答
舉報