Я использую Object.freeze(document.location)
, чтобы заморозить document.location, но обнаружил, что все еще могу изменить document.location.host. И я обнаружил, что в свойстве document.location.host
нет writable
, поэтому я могу это сделать?
Object.getOwnPropertyDescriptors(document.location)
// result
{replace: {…}, href: {…}, ancestorOrigins: {…}, origin: {…}, protocol: {…}, …}
ancestorOrigins: {get: ƒ, set: undefined, enumerable: true, configurable: false}
assign: {value: ƒ, writable: false, enumerable: true, configurable: false}
hash: {get: ƒ, set: ƒ, enumerable: true, configurable: false}
host:
configurable: false
enumerable: true
get: ƒ host()
set: ƒ host()
__proto__: Object
hostname: {get: ƒ, set: ƒ, enumerable: true, configurable: false}
href:
configurable: false
enumerable: true
value: "https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty"
writable: false
__proto__: Object
origin: {get: ƒ, set: undefined, enumerable: true, configurable: false}
pathname: {get: ƒ, set: ƒ, enumerable: true, configurable: false}
port: {get: ƒ, set: ƒ, enumerable: true, configurable: false}
protocol: {get: ƒ, set: ƒ, enumerable: true, configurable: false}
reload: {value: ƒ, writable: false, enumerable: true, configurable: false}
replace: {value: ƒ, writable: false, enumerable: true, configurable: false}
search: {get: ƒ, set: ƒ, enumerable: true, configurable: false}
toString: {value: ƒ, writable: false, enumerable: true, configurable: false}
valueOf: {value: ƒ, writable: false, enumerable: false, configurable: false}
Symbol(Symbol.toPrimitive): {value: undefined, writable: false, enumerable: false, configurable: false}
__proto__: Object