JS Object.getOwnPropertyDescriptor()和Object.defineProperty()

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>

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。