JavaScript覆盖对象属性可枚举性仍然不可枚举

JavaScript覆盖对象属性可枚举性仍然不可枚举,javascript,prototype,Javascript,Prototype,我正在学习JavaScript的原型链和中针对…的,并想知道是否有可能覆盖内置方法的某些数据属性。我有以下片段: 函数父级(名称){ this.name=名称; } Parent.prototype.sex=“男性”; 功能子项(姓名、年龄){ 调用(此,名称); 这个。年龄=年龄; } Child.prototype=Object.create(Parent.prototype); Object.defineProperty(Child.prototype,“构造函数”{ 价值观:儿童, 可枚

我正在学习JavaScript的原型链和中针对…的
,并想知道是否有可能覆盖内置方法的某些数据属性。我有以下片段:

函数父级(名称){
this.name=名称;
}
Parent.prototype.sex=“男性”;
功能子项(姓名、年龄){
调用(此,名称);
这个。年龄=年龄;
}
Child.prototype=Object.create(Parent.prototype);
Object.defineProperty(Child.prototype,“构造函数”{
价值观:儿童,
可枚举:false,
});
const person1=新生儿(“约翰”,26岁);
for(const key in person1){
控制台日志(键);
}
//名字
//年龄
//性
上面的内容基本上是建立一个简单的继承,而底层的
for…in
迭代按预期工作。最重要的是,它能够在原型链的高层找到
sex
属性。 我假设所有这些对象的原型链中都有
对象.prototype
,但我没有从
对象的
for…in
循环中记录任何键的原因是,prototype
对象都有
可枚举:false
数据属性集。因此,我尝试覆盖配置:

const fromEntries=Object.fromEntries;//一种随机不可枚举方法
Object.defineProperty(对象“fromEntries”{
值:fromEntries,
可枚举:正确,
});
log(Object.getOwnPropertyDescriptor(Object'fromEntries');
//{value:[函数:fromEntries],可写:true,可枚举:true,可配置:true}
for(const key in person1){
控制台日志(键);
}
//名字
//年龄
//性

问题是,我仍然没有将“fromEntries”方法登录到我的
for…in
循环中。我是否对原型链的工作原理做出了错误的假设?或者是因为
对象.prototype
是不可配置的还是类似的?感谢您的帮助

fromEntries
是对象本身的一种方法-它不在对象.prototype
上,因此在正常情况下,任何对象的原型链中都不会有
对象.fromEntries

类似地,将属性设置到父对象上不会将其放入原型链:

函数父级(名称){
this.name=名称;
}
Parent.prototype.sex=“男性”;
功能子项(姓名、年龄){
调用(此,名称);
这个。年龄=年龄;
}
Child.prototype=Object.create(Parent.prototype);
Parent.STATIC_PROPERTY='STATIC PROPERTY';
const c=新的孩子('somename',5);
用于(c中的常量属性){
控制台日志(道具);

}
fromEntries
是一个对象本身上的方法-它不在对象.prototype上,因此在正常情况下,任何对象的原型链中都不会有
对象.fromEntries

类似地,将属性设置到父对象上不会将其放入原型链:

函数父级(名称){
this.name=名称;
}
Parent.prototype.sex=“男性”;
功能子项(姓名、年龄){
调用(此,名称);
这个。年龄=年龄;
}
Child.prototype=Object.create(Parent.prototype);
Parent.STATIC_PROPERTY='STATIC PROPERTY';
const c=新的孩子('somename',5);
用于(c中的常量属性){
控制台日志(道具);

}
您正在对Object进行更改,Object是不在person1继承链中的类(与Object.prototype相对)。对象实例没有内置的fromEntries方法。您正在对不在person1继承链中的类Object(与Object.prototype相反)进行更改。对象实例没有内置的fromEntries方法。