ECMAScript 5 对对象属性进行了重新定义。除了原有的 property:value外,还增加了一些用于 标识该属性是否可写,可枚举,可配置的特性。为此引入了两个新方法:Object.getOwnPropertyDescriptor()和Object.defineProperty()。
<script> var person ={ name:"Hai" }; //定义一个新对象 var personName = Object.getOwnPropertyDescriptor(person,"name"); //获取name属性身上的特性 console.log(personName); //输出为{value: "Hai", writable: true, enumerable: true, configurable: true} var personToString = Object.getOwnPropertyDescriptor(person,"toString"); //注意这里的Own,它的意思是只能获取对象本身自有的属性的特性 console.log(personToString); //因为toString()是Object的方法,是继承来的,所以返回undefined Object.defineProperty(person,"name",{writable:false}); //修改name属性的可写特性为false,则不可以对name重新赋值 personName = Object.getOwnPropertyDescriptor(person,"name"); //再次获取name属性的特性 console.log(personName); //{value: "Hai", writable: false, enumerable: true, configurable: true} person.name = "dingding"; //强行修改name console.log(person.name); //这里仍然输出 “Hai” </script>
时间: 2024-11-08 12:37:03