has-proto 


Does this environment have the ability to set the [[Prototype]] of an object on creation with __proto__?
Example
var hasProto = require('has-proto');
var assert = require('assert');
assert.equal(typeof hasProto(), 'boolean');
var hasProtoAccessor = require('has-proto/accessor')();
if (hasProtoAccessor) {
assert.equal([].__proto__, Array.prototype);
} else {
assert(!('__proto__' in Object.prototype));
}
var hasProtoMutator = require('has-proto/mutator');
var obj = {};
assert('toString' in obj);
obj.__proto__ = null;
if (hasProtoMutator) {
assert(!('toString' in obj));
} else {
assert('toString' in obj);
assert.equal(obj.__proto__, null);
}
Tests
Simply clone the repo, npm install, and run npm test
关于 has-proto 的常见问题
has-proto 是什么?
Does this environment have the ability to get the [[Prototype]] of an object on creation with __proto__?
如何安装 has-proto?
在项目目录运行 npm install has-proto,或使用 pnpm add / yarn add / bun add。
has-proto 支持 TypeScript 吗?
支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。
has-proto 支持 ESM 还是 CommonJS?
以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。
has-proto 需要什么版本的 Node.js?
package.json 的 engines 字段要求 Node.js >= 0.4。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。
has-proto 可以商用吗?
has-proto 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。
has-proto 的下载量有多少?
根据 npm 官方下载统计,has-proto 在 2026/10/05 – 2026/11/03 这 30 天内被下载 365,724,762 次,日均约 12,190,825 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。
has-proto 还在维护吗?
最新版本 1.2.0 发布于 2024/12/07(1.9 年前);至今共发布 6 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/12/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。