Object.seal = function(O){
if (Type(O) != 'Object') throw TypeError;
for (P in O) {
var desc = O.[[GetOwnProperty]](P);
if (desc.[[Configurable]]) desc.[[Configurable]] = false;
O.[[DefineOwnProperty]](P, desc, true);
}
O.[[Extensible]] = false;
return O;
}