定义一些不可枚举的属性,遇到了坑
发布于 3 年前 作者 takayama-lily 1657 次浏览 来自 问答
class Fish { }
Reflect.defineProperty(Fish.prototype, "prop", {
	configurable: true,
	enumerable: false, //定义为不可枚举的
	writable: true,
})
var fish = new Fish
fish.prop = 123
console.log(fish.propertyIsEnumerable("prop")) //print: true (重新赋值后他变为了可枚举的)
console.log(Reflect.propertyIsEnumerable(fish, "prop")) //print: false (但是这里又显示为不可枚举)
console.log(JSON.stringify(fish)) //print: {"prop":123} (结果来看还是可枚举的,定义失败)

看上去是因为属性实例化后一旦修改就脱离原型了,但不知为何描述符也弄丢了。 另外两个propertyIsEnumerable输出结果不同也难以理解。

回到顶部