澄清主持人 由于一些版主扫描方面的问题时,whee位快,我必须强调,我不问为什么要使用Object.prototype.hasOwnProperty.call替代myObject.hasOwnProperty。细节决定成败。
该ESLint规则no-prototype-builtins禁止使用从未来的内置插件的Object原型。它可以为您提供如下代码:
function serverMethodToParseClientInput(json){
const o = JSON.parse(json);
if (o.hasOwnProperty("foo")) {
doSomethingMeaningful();
}
}
const stringFromClient = "{\"hasOwnProperty\":1, \"reason\": \"Crash your system\"}";
serverMethodToParseClientInput(stringFromClient);
尝试在以null原型创建的对象上调用该方法也会失败,我认为这是一个更合理的防范措施。例子:const o = Object.create(null);。
相反obj.hasOwnProperty(field),您应该使用Object.prototype.hasOwnProperty.call(obj, field). 我真的没有看到 this 和 之间的区别Object.hasOwnProperty.call(obj, field)。当然,Object它不是它自己的原型,因此存在各种差异,但是由于您可以覆盖任一对象上的道具,因此这里并没有太多的保护措施,恕我直言。
所以我想知道什么Object时候Object会做原型有什么意义吗?
LEATH
相关分类