@a11d/is-writable

中文文档
1.0.4发布于 2026/10/07MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 4579

Object.isWritable,指某地产是否可以被指定,考虑描述器,访问器,冻结和原型.

中文使用文档
文档目录4 节
  1. 安装
  2. API 密码
  3. 行为
  4. 出口

@a11d/is-writable

检查一个对象属性是否可写出, 记录属性描述符、 获取符/ 发送符以及原型链 .

import '@a11d/is-writable'

const obj = { name: 'John' }
Object.defineProperty(obj, 'id', { value: 123, writable: false })

Object.isWritable(obj, 'name') // true
Object.isWritable(obj, 'id') // false

安装

npm install @a11d/is-writable

API 密码

Object.isWritable(object, key): boolean ——检查一个属性是否可以写入

回返 true 如果财产是可写入的, false 否则.

const obj = {}
Object.defineProperty(obj, 'readonly', { value: 42, writable: false })

Object.isWritable(obj, 'readonly') // false
Object.isWritable(obj, 'newProp') // true (non-existent properties are writable)

检查整个原型链 :

class Base {
    get value() { return 1 }
}

class Child extends Base {}

Object.isWritable(new Child(), 'value') // false (getter-only in prototype)

行为

被冻结的对象

回返 false 对于被冻结物体上的所有属性:

const obj = { name: 'John' }
Object.freeze(obj)

Object.isWritable(obj, 'name') // false
Object.isWritable(obj, 'newProp') // false
获取器和设置器

只获取属性不可写 :

const obj = {
    get value() { return 42 }
}

Object.isWritable(obj, 'value') // false

既包含获取器又包含设定器的属性可写 :

const obj = {
    get value() { return this._value },
    set value(v) { this._value = v }
}

Object.isWritable(obj, 'value') // true

仅保存属性可写 :

const obj = {
    set value(v) { console.log(v) }
}

Object.isWritable(obj, 'value') // true
不存在属性

不存在的属性被视为可写( 除非对象被冻结) :

const obj = {}
Object.isWritable(obj, 'newProp') // true
原型链

检查原型链中的所有描述符 :

class Base {
    get value() { return 1 }
}

class Child extends Base {
    get value() { return 2 }
    set value(v) { /* add setter alongside getter */ }
}

Object.isWritable(new Base(), 'value') // false (getter-only)
Object.isWritable(new Child(), 'value') // true (has both getter and setter)

出口

名称仁爱
isWritable函数

版本与发布记录

@a11d/is-writable 共发布 6 个版本,首次发布于 2023/10/16;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.4latest2026/10/0730 天前
1.0.32026/09/291 个月前
1.0.22025/12/0910 个月前
1.0.12023/10/163 年前
1.0.02023/10/163 年前
0.0.12023/10/163 年前

关于 @a11d/is-writable 的常见问题

@a11d/is-writable 是什么?

Object.isWritable,指某地产是否可以被指定,考虑描述器,访问器,冻结和原型.

如何安装 @a11d/is-writable?

在项目目录运行 npm install @a11d/is-writable,或使用 pnpm add / yarn add / bun add。

@a11d/is-writable 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@a11d/is-writable 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@a11d/is-writable 可以商用吗?

@a11d/is-writable 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@a11d/is-writable 的下载量有多少?

根据 npm 官方下载统计,@a11d/is-writable 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,579 次,日均约 153 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@a11d/is-writable 还在维护吗?

最新版本 1.0.4 发布于 2026/10/07(30 天前);至今共发布 6 个版本,其中过去 12 个月发布了 3 个;首次发布于 2023/10/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。