Baseline Widely available
СводкаÐеÑод Object.isFrozen()
опÑеделÑеÑ, бÑл ли обÑÐµÐºÑ Ð·Ð°Ð¼Ð¾Ñожен.
obj
ÐÑовеÑÑемÑй обÑекÑ.
ÐбÑÐµÐºÑ ÑвлÑеÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм ÑолÑко в Ñом ÑлÑÑае, еÑли он не ÑаÑÑиÑÑем, вÑе его ÑвойÑÑва ÑвлÑÑÑÑÑ Ð½Ðµ наÑÑÑаиваемÑми и вÑе его ÑвойÑÑва даннÑÑ (Ñо еÑÑÑ Ñакие, коÑоÑÑе не ÑвлÑÑÑÑÑ ÑвойÑÑвами доÑÑÑпа Ñ ÑÑнкÑиÑми ÑеÑÑеÑа или геÑÑеÑа) ÑвлÑÑÑÑÑ Ð½Ðµ запиÑÑваемÑми.
ÐÑимеÑÑ// ÐовÑй обÑÐµÐºÑ ÑвлÑеÑÑÑ ÑаÑÑиÑÑемÑм, Ñак ÑÑо он не замоÑожен.
assert(Object.isFrozen({}) === false);
// ÐÑÑÑой не ÑаÑÑиÑÑемÑй обÑÐµÐºÑ Ð¿Ð¾ опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼Ð¾Ñожен.
var vacuouslyFrozen = Object.preventExtensions({});
assert(Object.isFrozen(vacuouslyFrozen) === true);
// ÐовÑй обÑÐµÐºÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ ÑвойÑÑвом ÑвлÑеÑÑÑ ÑаÑÑиÑÑемÑм, поÑÑÐ¾Ð¼Ñ Ð¾Ð½ не замоÑожен.
var oneProp = { p: 42 };
assert(Object.isFrozen(oneProp) === false);
// ÐÑедоÑвÑаÑение ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑа вÑÑ ÐµÑÑ Ð½Ðµ Ð´ÐµÐ»Ð°ÐµÑ ÐµÐ³Ð¾ замоÑоженнÑм,
// поÑколÑÐºÑ ÑвойÑÑво вÑÑ ÐµÑÑ Ð¾ÑÑаÑÑÑÑ Ð½Ð°ÑÑÑаиваемÑм (и запиÑÑваемÑм).
Object.preventExtensions(oneProp);
assert(Object.isFrozen(oneProp) === false);
// ...но пÑи Ñдалении ÑÑого ÑвойÑÑва обÑÐµÐºÑ ÑÑановиÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм по опÑеделениÑ.
delete oneProp.p;
assert(Object.isFrozen(oneProp) === true);
// Ðе ÑаÑÑиÑÑемÑй обÑÐµÐºÑ Ñ Ð½Ðµ запиÑÑваемÑм, но вÑÑ ÐµÑÑ Ð½Ð°ÑÑÑаиваемÑм ÑвойÑÑвом, не ÑвлÑеÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм.
var nonWritable = { e: "plep" };
Object.preventExtensions(nonWritable);
Object.defineProperty(nonWritable, "e", { writable: false }); // делаем ÑвойÑÑво не запиÑÑваемÑм
assert(Object.isFrozen(nonWritable) === false);
// Ðзменение ÑвойÑÑва на не наÑÑÑаиваемое Ð´ÐµÐ»Ð°ÐµÑ Ð¾Ð±ÑÐµÐºÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм.
Object.defineProperty(nonWritable, "e", { configurable: false }); // делаем ÑвойÑÑво не наÑÑÑаиваемÑм
assert(Object.isFrozen(nonWritable) === true);
// Ðе ÑаÑÑиÑÑемÑй обÑÐµÐºÑ Ñ Ð½Ðµ наÑÑÑаиваемÑм, но вÑÑ ÐµÑÑ Ð·Ð°Ð¿Ð¸ÑÑваемÑм ÑвойÑÑвом, Ñакже не ÑвлÑеÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм.
var nonConfigurable = { release: "кÑакен!" };
Object.preventExtensions(nonConfigurable);
Object.defineProperty(nonConfigurable, "release", { configurable: false });
assert(Object.isFrozen(nonConfigurable) === false);
// Ðзменение ÑвойÑÑва на не запиÑÑваемое Ð´ÐµÐ»Ð°ÐµÑ Ð¾Ð±ÑÐµÐºÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм.
Object.defineProperty(nonConfigurable, "release", { writable: false });
assert(Object.isFrozen(nonConfigurable) === true);
// Ðе ÑаÑÑиÑÑемÑй обÑÐµÐºÑ Ñ Ð½Ð°ÑÑÑаиваемÑм ÑвойÑÑвом доÑÑÑпа не ÑвлÑеÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм.
var accessor = {
get food() {
return "нÑм";
},
};
Object.preventExtensions(accessor);
assert(Object.isFrozen(accessor) === false);
// ...но Ñделав ÑÑо ÑвойÑÑво не наÑÑÑаиваемÑм, обÑÐµÐºÑ ÑÑановиÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑм.
Object.defineProperty(accessor, "food", { configurable: false });
assert(Object.isFrozen(accessor) === true);
// СамÑм же пÑоÑÑÑм ÑпоÑобом замоÑозиÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑеÑез вÑзов на нÑм меÑода Object.freeze.
var frozen = { 1: 81 };
assert(Object.isFrozen(frozen) === false);
Object.freeze(frozen);
assert(Object.isFrozen(frozen) === true);
// Ðо опÑеделениÑ, замоÑоженнÑй обÑÐµÐºÑ ÑвлÑеÑÑÑ Ð½Ðµ ÑаÑÑиÑÑемÑм.
assert(Object.isExtensible(frozen) === false);
// Также, по опÑеделениÑ, замоÑоженнÑй обÑÐµÐºÑ ÑвлÑеÑÑÑ Ð·Ð°Ð¿ÐµÑаÑаннÑм.
assert(Object.isSealed(frozen) === true);
ÐÑимеÑаниÑ
Ð ES5, еÑли аÑгÑÐ¼ÐµÐ½Ñ Ð¼ÐµÑода не ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом (ÑвлÑеÑÑÑ Ð¿ÑимиÑивнÑм знаÑением), бÑÐ´ÐµÑ Ð²ÑбÑоÑено иÑклÑÑение TypeError
. Ð ES6 Ñакой аÑгÑÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ ÑаÑÑмаÑÑиваÑÑÑÑ, как пÑоÑÑой замоÑоженнÑй обÑÐµÐºÑ Ð¸ меÑод пÑоÑÑо веÑнÑÑ true
.
> Object.isFrozen(1)
TypeError: 1 is not an object // код ES5
> Object.isFrozen(1)
true // код ES6
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4