Baseline Widely available
ÐеÑод Object.seal()
запеÑаÑÑÐ²Ð°ÐµÑ Ð¾Ð±ÑекÑ, пÑедоÑвÑаÑÐ°Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ новÑÑ
ÑвойÑÑв к обÑекÑÑ Ð¸ Ð´ÐµÐ»Ð°Ñ Ð²Ñе ÑÑÑеÑÑвÑÑÑие ÑвойÑÑва не наÑÑÑаиваемÑми. ÐнаÑÐµÐ½Ð¸Ñ Ð¿ÑедÑÑавленнÑÑ
ÑвойÑÑв вÑÑ ÐµÑÑ Ð¼Ð¾Ð³ÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑÑÑ, поÑколÑÐºÑ Ð¾Ð½Ð¸ оÑÑаÑÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑваемÑми.
obj
ÐапеÑаÑÑваемÑй обÑекÑ.
Ðо ÑмолÑаниÑ, обÑекÑÑ ÑвлÑÑÑÑÑ ÑаÑÑиÑÑемÑми (к ним могÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ð½Ð¾Ð²Ñе ÑвойÑÑва). ÐапеÑаÑÑвание обÑекÑа пÑедоÑвÑаÑÐ°ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ к Ð½ÐµÐ¼Ñ Ð½Ð¾Ð²ÑÑ
ÑвойÑÑв и Ð´ÐµÐ»Ð°ÐµÑ Ð²Ñе ÑÑÑеÑÑвÑÑÑие ÑвойÑÑва не наÑÑÑаиваемÑми. Ðно Ð´ÐµÐ»Ð°ÐµÑ Ð²Ñе ÑвойÑÑва обÑекÑа ÑикÑиÑованнÑми и неизменнÑми. ÐомеÑка вÑеÑ
ÑвойÑÑв обÑекÑа как не наÑÑÑаиваемÑÑ
Ñакже пÑедоÑвÑаÑÐ°ÐµÑ Ð¸Ñ
пÑеобÑазование из ÑвойÑÑв даннÑÑ
в ÑвойÑÑва доÑÑÑпа и наобоÑоÑ, но не пÑедоÑвÑаÑÐ°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ знаÑÐµÐ½Ð¸Ñ ÑвойÑÑв даннÑÑ
. ÐопÑÑки ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑвойÑÑв к запеÑаÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ, либо пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑв даннÑÑ
в ÑвойÑÑва доÑÑÑпа и наобоÑоÑ, бÑдÑÑ ÑеÑпеÑÑ Ð½ÐµÑдаÑÑ, либо молÑа, либо Ñ Ð²ÑбÑаÑÑванием иÑклÑÑÐµÐ½Ð¸Ñ TypeError
(как пÑавило, но не обÑзаÑелÑно, ÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð² ÑÑÑогом Ñежиме).
ЦепоÑка пÑоÑоÑипов не заÑÑагиваеÑÑÑ. Ðднако, ÑвойÑÑво Object.prototype.__proto__
УÑÑаÑело Ñакже запеÑаÑÑваÑÑÑÑ.
var obj = {
prop: function () {},
foo: "bar",
};
// ÐовÑе ÑвойÑÑва Ð¼Ð¾Ð³Ñ Ð±ÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ, ÑÑÑеÑÑвÑÑÑие ÑвойÑÑва могÑÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¸Ð»Ð¸ ÑдаленÑ.
obj.foo = "baz";
obj.lumpy = "woof";
delete obj.prop;
var o = Object.seal(obj);
assert(o === obj);
assert(Object.isSealed(obj) === true);
// Ðзменение знаÑений ÑвойÑÑв на запеÑаÑанном обÑекÑе вÑÑ ÐµÑÑ ÑабоÑаеÑ.
obj.foo = "quux";
// Ðо Ð²Ñ Ð½Ðµ можеÑе пÑеобÑазоваÑÑ ÑвойÑÑва даннÑÑ
в ÑвойÑÑва доÑÑÑпа и наобоÑоÑ.
Object.defineProperty(obj, "foo", {
get: function () {
return "g";
},
}); // вÑбÑоÑÐ¸Ñ TypeError
// ТепеÑÑ Ð»ÑбÑе изменениÑ, кÑоме Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений ÑвойÑÑв, не бÑдÑÑ ÑабоÑаÑÑ.
obj.quaxxor = "дÑÑжелÑÐ±Ð½Ð°Ñ ÑÑка"; // молÑа не Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ ÑвойÑÑво
delete obj.foo; // молÑа не ÑÐ´Ð°Ð»Ð¸Ñ ÑвойÑÑво
// ...а в ÑÑÑогом Ñежиме Ñакие попÑÑки бÑдÑÑ Ð²ÑбÑаÑÑваÑÑ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ TypeError.
function fail() {
"use strict";
delete obj.foo; // вÑбÑоÑÐ¸Ñ TypeError
obj.sparky = "arf"; // вÑбÑоÑÐ¸Ñ TypeError
}
fail();
// ÐопÑÑка добавиÑÑ ÑÑо-Ñо ÑеÑез Object.defineProperty Ñакже вÑбÑоÑÐ¸Ñ Ð¸ÑклÑÑение.
Object.defineProperty(obj, "ohai", { value: 17 }); // вÑбÑоÑÐ¸Ñ TypeError
Object.defineProperty(obj, "foo", { value: "eit" }); // изменÑем знаÑение ÑÑÑеÑÑвÑÑÑего ÑвойÑÑва
ÐÑимеÑаниÑ
Ð ES5, еÑли аÑгÑÐ¼ÐµÐ½Ñ Ð¼ÐµÑода не ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом (ÑвлÑеÑÑÑ Ð¿ÑимиÑивнÑм знаÑением), бÑÐ´ÐµÑ Ð²ÑбÑоÑено иÑклÑÑение TypeError
. Ð ES6 Ñакой аÑгÑÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ ÑаÑÑмаÑÑиваÑÑÑÑ, как пÑоÑÑой запеÑаÑаннÑй обÑÐµÐºÑ Ð¸ меÑод его пÑоÑÑо веÑнÑÑ.
> Object.seal(1)
TypeError: 1 is not an object // код ES5
> Object.seal(1)
1 // код 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