在线文档教程

Object.isExtensible

Object.isExtensible

Object.isExtensible()方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。

语法

Object.isExtensible(obj)

参数

obj需要检测的对象

返回值

Boolean表示给定对象是否可扩展。

描述

默认情况下,对象是可扩展的:即可以为他们添加新的属性。以及它们的 __proto__ 属性可以被更改。Object.preventExtensionsObject.sealObject.freeze 方法都可以标记一个对象为不可扩展(non-extensible)。

示例

// New objects are extensible. var empty = {}; Object.isExtensible(empty // === true // ...but that can be changed. Object.preventExtensions(empty Object.isExtensible(empty // === false // Sealed objects are by definition non-extensible. var sealed = Object.seal{} Object.isExtensible(sealed // === false // Frozen objects are also by definition non-extensible. var frozen = Object.freeze{} Object.isExtensible(frozen // === false

注意事项

在 ES5 中,如果参数不是一个对象类型,将抛出一个 TypeError 异常。在 ES6 中, non-object 参数将被视为一个不可扩展的普通对象,因此会返回 false 。

Object.isExtensible(1 // TypeError: 1 is not an object (ES5 code) Object.isExtensible(1 // false (ES2015 code)

规范

SpecificationStatusComment
ECMAScript 5.1 (ECMA-262)The definition of 'Object.isExtensible' in that specification.StandardInitial definition. Implemented in JavaScript 1.8.5.
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Object.isExtensible' in that specification.Standard
ECMAScript Latest Draft (ECMA-262)The definition of 'Object.isExtensible' in that specification.Living Standard

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support6(Yes)49125.1

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

See also

  • Object.preventExtensions()

  • Object.seal()

  • Object.isSealed()

  • Object.freeze()

  • Object.isFrozen()

  • Reflect.isExtensible()

Edit this page on MDN

© 2005–2017 Mozilla Developer Network and individual contributors.

Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible