栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么是Object.defineProperty()而不是this.defineProperty()(对于对象)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么是Object.defineProperty()而不是this.defineProperty()(对于对象)?

这是为了避免发生冲突-通常情况下,对象的问题不具有所需值的属性。
JS中的对象通常用作键-值映射,键可以是任意字符串-例如

__defineGetter__
hasOwnProperty
或不太特殊的东西。现在,当您想在未知对象上调用此类函数时(就像
hasOwnProperty
泛型枚举函数中经常使用的那样,可能会传入任何JSON),您永远无法确定自己是否获得了被覆盖的属性(甚至可能不是函数))或所需的原始对象,或者该对象是否完全继承了该属性。为了避免这个问题,您必须使用
Object.prototype.hasOwnProperty.call
-很难看。

因此,命名所有这些功能

Object
仅是有用的,它是一种更清洁的API,用于将反射方法与对象的应用程序界面分开。这还有助于优化(简化静态分析),并使限制沙箱中对反射API的访问更加容易-
至少这是设计思想。

您可能会很乐意

defineProperty
在原型中添加一个环,但是只有在使用已知对象时才能安全地使用它。如果您仍然想要它(如您所知何时使用和何时不使用),则可以使用

Object.defineProperty(Object.prototype, "defineProperty", {    writable: true,    enumberable: false,    value: function(prop, descr) {        return Object.defineProperty(this, prop, descr);     }});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号