对属性的更改

严格模式还会阻止你删除不可删除的属性。

"use strict";
delete Object.prototype; // throws a TypeError

如果不使用严格模式,则会忽略上述语句,但是现在你知道它为什么不按预期执行。

它还会阻止你扩展不可扩展的属性。

var myObject = {name: "My Name"}
Object.preventExtensions(myObject);

function setAge() {
    myObject.age = 25;   // No errors
}

function setAge() {
    "use strict";
    myObject.age = 25;  // TypeError: can't define property "age": Object is not extensible
}