红皮书》记录js 防篡改对象"/>
读《红皮书》记录js 防篡改对象
JavaScript 共享的本质一直是开发人员心头的痛。因为任何对象都可以被在同一环境中运行的代码 修改。开发人员很可能会意外地修改别人的代码,甚至更糟糕地,用不兼容的功能重写原生对象。 ECMAScript 5 致力于解决这个问题,可以让开发人员定义防篡改对象 --- 摘自 红皮书
例子来自红皮书 第22.2章 《防篡改对象》
1.不可扩展对象Object.preventExtensions()
var person = { name: "Nicholas" };
Object.preventExtensions(person);
person.age = 29;
alert(person.age); //undefined
注: 不能给 对象添加新属性和方法,但是可以修改和删除已有的属性和方法
2.密封对象 Object.seal()
var person = { name: "Nicholas" };
Object.seal(person);
person.age = 29;
alert(person.age); //undefined
delete person.name;
alert(person.name); //"Nicholas"
注:不能删除属性和方法,但是属性值是可以修改
3.是冻结对象Object.freeze()
var person = { name: "Nicholas" };
Object.freeze(person);
person.age = 29;
alert(person.age); //undefined
delete person.name;
alert(person.name); //"Nicholas"
person.name = "Greg";
alert(person.name); //"Nicholas"
注: 不能删除 不能修改
更多推荐
读《红皮书》记录js 防篡改对象
发布评论