JavaScript中的对象的extensible属性介绍

 更新时间:2014年12月30日 09:22:13   投稿:junjie  
这篇文章主要介绍了JavaScript中的对象的extensible属性介绍,JavaScript中,对象的extensible属性用于表示是否允许在对象中动态添加新的property,需要的朋友可以参考下

JavaScript中,对象的extensible属性用于表示是否允许在对象中动态添加新的property。ECMAScript 3标准中,所有的对象都是extensible的。ECMAScript 5标准中,所有的对象默认仍是extensible的,但可以通过设定来改变这一属性。

查询一个对象是否是extensible的,可以使用Object.isExtensible()语句:


复制代码 代码如下:

var o = {x:1};
console.log(Object.isExtensible(o));//true


使一个对象变成不是extensible的,可以使用Object.preventExtensions()语句:


复制代码 代码如下:

Object.preventExtensions(o)
console.log(Object.isExtensible(o));//false


值得注意的是,由于没有Object.preventExtensions()的反操作语句,因此一旦某个对象被设定为非extensible后,将没有办法重新再将其设定为extensible。

Object.preventExtensions()语句作用的范围是对象自身,原型对象不受影响。如果某个对象被设定为非extensible,那么其原型对象中依然可以动态添加property,而这些动态添加的property也依然可以被对象继承到。

Object.seal()和Object.freeze()

Object.preventExtensions()可以防止在对象中动态添加新的property。除了这个操作,JavaScript中还存在另外两个更加严格的操作来保护对象:Object.seal()和Object.freeze()。

Object.seal()的作用是在Object.preventExtensions()的基础上,设定所有对象自身property的configurable属性为false。与Object.preventExtensions()操作一样,Object.seal()没有反操作,因此一旦将对象seal了之后将无法恢复其状态。在JavaScript中,可以通过Object.isSealed()来查询某个对象是否被seal了。

Object.freeze()的作用是在Object.seal()的基础上,将所有对象自身的property设定为只读。与Object.seal()和Object.preventExtensions()操作一样,Object.freeze()没有反操作,因此一旦将对象freeze了之后将无法恢复其状态。在JavaScript中,可以通过Object.isFrozen()来查询某个对象是否被freeze了。


复制代码 代码如下:

console.log(Object.isSealed(o));//false
Object.seal(o);
console.log(Object.isSealed(o));//true
console.log(Object.isFrozen(o));//false
Object.freeze(o);
console.log(Object.isFrozen(o));//true


无论是Object.preventExtensions(),还是Object.seal()和Object.freeze(),其作用范围均为对象自身,对象的原型对象将不受影响。

相关文章

  • js实现简洁的滑动门菜单(选项卡)效果代码

    js实现简洁的滑动门菜单(选项卡)效果代码

    这篇文章主要介绍了js实现简洁的滑动门菜单(选项卡)效果代码,涉及javascript鼠标事件操作页面元素样式切换的实现技巧,简单实用,需要的朋友可以参考下
    2015-09-09
  • 微信小程序实现轮播图指示器

    微信小程序实现轮播图指示器

    这篇文章主要为大家详细介绍了微信小程序实现轮播图指示器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • javascript模拟实现ajax加载框实例

    javascript模拟实现ajax加载框实例

    这篇文章主要介绍了javascript模拟实现ajax加载框的方法,实例简述了其实现过程,方法简单实用,需要的朋友可以参考下
    2014-10-10
  • Javascript操纵Cookie实现购物车程序

    Javascript操纵Cookie实现购物车程序

    Javascript操纵Cookie实现购物车程序...
    2006-11-11
  • 微信小程序tabbar底部导航

    微信小程序tabbar底部导航

    这篇文章主要为大家详细介绍了微信小程序重写tabbar底部导航,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • echarts学习之如何给饼图中间添加文字

    echarts学习之如何给饼图中间添加文字

    这篇文章主要介绍了echarts学习之如何给饼图中间添加文字问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • JS生态系统加速Tailwind CSS工作原理探究

    JS生态系统加速Tailwind CSS工作原理探究

    这篇文章主要为大家介绍了JS 生态系统加速Tailwind CSS使用及工作原理探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • JavaScript实现私有属性的几种方式小结

    JavaScript实现私有属性的几种方式小结

    在JavaScript中,私有属性是指只能在对象内部访问的属性,外部无法直接访问,JavaScript并没有提供官方的私有属性的支持,但可以通过一些技巧来模拟实现私有属性,所以本文给大家总结了JavaScript实现私有属性的几种方式,需要的朋友可以参考下
    2024-04-04
  • Webpack处理js资源(Eslint、Babel)

    Webpack处理js资源(Eslint、Babel)

    Webpack对js处理是有限的,只能编译js中ES模块化语法,不能编译其他语法,导致js不能在IE等浏览器运行,本文主要介绍了Webpack处理js资源,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • js格式化时间的方法

    js格式化时间的方法

    这篇文章主要介绍了js格式化时间的方法,对javascript时间格式化的方法进行了总结,感兴趣的小伙伴们可以参考一下
    2015-12-12

最新评论