gpt4 book ai didi

javascript - 对象 js 代理中的 Chrome 52 Object.keys 错误?

转载 作者:行者123 更新时间:2023-12-01 17:43:53 24 4
gpt4 key购买 nike

从 Chrome 52 开始,如果在代理内部调用,Object.keys 也会显示不可枚举的字段。 Chrome 51 没问题。 Edge 和 Firefox 也可以。

这是一个愚蠢的测试来证明它。只需在 Chrome 52 上运行它即可显示错误行为:

var target={};
Object.defineProperty(target,"__observerCallbacks__",{enumerable:false,configurable:true,writable:false,value:['aaaa']});
var ori='';
Object.keys(target).forEach(
function(x){
ori+=x;
}
);
var proxy='';
var p = new Proxy(target, {get:function(target,property)
{
return property;
}
});
Object.keys(p).forEach(
function(x){
//if (window.target.propertyIsEnumerable(x)){
proxy+=x;
//}
}
);
//alert('ori '+ori+' proxy '+proxy);
console.log('ori', ori, 'proxy', proxy)

有人遇到过这个问题吗?有什么建议么?猴子补丁?

最佳答案

我稍微清理了错误测试。我确实在 Chrome 51 和 Chrome 52 上运行过它,行为确实不同。在 Chrome 51 中,tKeys 等于 pKeystNames 等于 pNames,但在 Chrome 52 中,tKeys 等于tNames,好像有问题。

__observerCallbacks__ 更改为另一个属性名称似乎无法解决问题,因此属性名称无关。我建议您向 Google 提交此错误报告。

附带说明一下,当属性名称是 __observerCallbacks__。我不确定它为什么这样做,但我认为它不相关,因为它特定于该属性名称。

var target = {};

Object.defineProperty(target, "__observerCallbacks__", {
enumerable: false,
configurable: true,
writable: false,
value: ['aaaa']
});

var tKeys = Object.keys(target);
var tNames = Object.getOwnPropertyNames(target);
var tProps = tNames.map(Object.getOwnPropertyDescriptor.bind(target));
var tValue = target.__observerCallbacks__;

var proxy = new Proxy(target, {
get: function(target, property) {
return property;
}
});

var pKeys = Object.keys(proxy);
var pNames = Object.getOwnPropertyNames(proxy);
var pProps = pNames.map(Object.getOwnPropertyDescriptor.bind(proxy));
var pValue = proxy.__observerCallbacks__;

console.log('target keys:', tKeys);
console.log('target own names:', tNames);
console.log('target property descriptors:', tProps);
console.log('target value:', tValue);

console.log('proxy keys:', pKeys);
console.log('proxy own names:', pNames);
console.log('proxy property descriptors', pProps);
console.log('proxy value:', pValue);

关于javascript - 对象 js 代理中的 Chrome 52 Object.keys 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38615647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com