首页 > 基础资料 博客日记

javascript高级语法之六 : 对象增强知识

2023-08-01 18:23:05基础资料围观252

Java资料网推荐javascript高级语法之六 : 对象增强知识这篇文章给大家,欢迎收藏Java资料网享受知识的乐趣

javascript高级语法之六 : 对象增强知识

在前面我们的属性都是直接定义在对象内直接添加到对象内部

缺陷 : 没办法对这个属性进行一些限制

比如 : 这个属性是否可以通过delete删除?可否在for...in遍历对时候被遍历出来?

解决 : 使用属性描述符。

 

属性描述符有两种 : 属性描述符可以精准的添加或修改对象的属性   使用 Object.defineProperty 来对属性进行添加或者修改

            configurable  enumerable  value  writable  get  set

  数据属性描述符 :   可以      可以      可以     可以   不   不

  存取属性描述符 :  可以      可以      不      bu   可以  可以

 

数据属性描述符

  1.configurable : 表示属性 是否可以通过delete删除属性是否可以修改它的特性是否可以将它修改为存取属性描述符

    通过对象上定义的 : 为 true 

    通过数据属性描述符的 : 为false 

  2.enumerable : 表示属性 是否可以通过for...in... 或者Object.keys()返回改属性。

    通过对象上定义的 : 为 true 

    通过数据属性描述符的 : 为false 

  3.writable : 是否可以修改属性的值

    通过对象上定义的 : 为 true 

    通过数据属性描述符的 : 为false 

 

Object.defineProperty( obj , prop ,descriptor) :  方法会直接在一个对象定义一个新属性,或者修改一个对象的现有属性,并返回此对象

  obj : 要定义属性的对象

  prop :要定义或修改的属性的名称或Symbol

  descriptor :要定义或修改的属性描述符

返回值 : 被传递给函数的对象

var obj = {
    name : "why",
    age : 18        
}

Object.defineProperty(obj,"name",{
    configurable : false ,//obj的name属性不可被删除
    enumerable :false ,//obj的那么属性不可枚举(for in / Object.keys)
    writable : false , //obj对象的name属性不写入(只读,不可修改)
    value :"coderwhy" //返回这个value
})

 


文章来源:https://www.cnblogs.com/qd-lbxx/p/16517305.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云