JavaScript preventExtensions方法

JavaScript preventExtensions方法教程

JavaScript 中,Object.preventExtensions 方法用来让一个 对象 变的不可扩展,也就是永远不能再添加新的 属性

JavaScript preventExtensions详解

语法

Object.preventExtensions(obj);

参数

参数 描述
obj 将要变得不可扩展的对象。

返回值

已经不可扩展的对象。

说明

如果一个对象可以添加新的属性,则这个对象是可扩展的。Object.preventExtensions() 将对象标记为不再可扩展,因此它将永远不会具有超出它被标记为不可扩展的属性。

注意,一般来说,不可扩展对象的属性可能仍然可被删除。尝试将新属性添加到不可扩展对象将静默失败或抛出TypeError(最常见但不排除其他情况,如在 strict mode 中)。

Object.preventExtensions() 仅阻止添加自身的属性。但属性仍然可以添加到对象原型。一旦使其不可扩展,就无法再对象进行扩展。

案例

Object.preventExtensions使对象不可扩展

使用 Object.preventExtensions 使对象不可扩展

<!DOCTYPE html> <html> <head> <title>JavaScript Object.preventExtensions使对象不可扩展</title> <script type="text/javascript"> console.log("嗨客网(www.haicoder.net)"); function createPerson(name, age, sex){ var person = new Object(); person.name = name; person.age = age; person.sex = sex; person.sayHi = function(){ console.log("I am", this.name, "i am", this.age, "years old", "and my sex is", this.sex); } return person; } var person = createPerson("HaiCoder", 109, "F"); person.name = "haicoder"; person.score = 100; console.log("Person name =", person.name, "score =", person.score); person = Object.preventExtensions(person); person.name = "HaiCoder"; person.weight = 70; console.log("Person name =", person.name, "weight =", person.weight); </script> </head> </html>

程序运行后,控制台输出如下:

17_JavaScript Object preventExtensions.png

我们首先创建了一个 person 对象,接着,我们修改了 person 对象的 name 属性并且为 person 对象增加了一个新的属性 score。

此时,我们打印出 person 对象的 name 属性的值和 score 属性的值,我们可以看到,name 属性的值被修改了,score 属性也被正确的添加了。

接着,我们使用 Object.preventExtensions 方法,将 person 对象变的不可扩展,接着,我们再次修改了 person 对象的 name 属性并且为 person 对象增加了一个新的属性 weight。

此时,我们再次打印出 person 对象的 name 属性的值和 weight 属性的值,我们可以看到,name 属性的值被修改了,weight 属性未能被添加成功。

因为,我们使用 preventExtensions 方法,将 person 对象变的不可扩展,因此, person 对象的属性可以被修改,但是不能被增加。

JavaScript preventExtensions方法总结

在 JavaScript 中,Object.preventExtensions 方法用来让一个对象变的不可扩展,也就是永远不能再添加新的属性。