首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MDN中的JavaScript接口

MDN中的JavaScript接口
EN

Stack Overflow用户
提问于 2021-04-12 05:58:24
回答 1查看 1.3K关注 0票数 4

据我所知,JavaScript是基于原型而不是类的OOP,它不考虑接口,而是依赖于鸭子类型。

然而,我经常可以在MDN在线文档中看到一些被描述为“接口”的对象,例如这里的Storage:

https://developer.mozilla.org/en-US/docs/Web/API/Storage

实际上,window.Storage是存在的,是一个函数,但不是构造函数或工厂,如果调用它就会失败。它没有像该页面中描述的那样的成员,而window.localStorage却有。该页面

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

将window.Storage作为window.localStorage访问的对象。我知道window.localStorage是一个原生对象,但我想了解window.Storage的角色,以及为什么它被MDN称为“接口”,在什么意义上:它是浏览器开发人员遵守的规范,而不是基于类的范例中的严格“接口”吗?

提前谢谢你,很抱歉问了这么奇怪的问题。只是想加深我对ES的理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-12 06:13:54

它不是一个可以实例化的带有构造函数的类,所以我们不称它为类。它也不是原型对象。

MDN在一般的OOP含义中使用术语interface,它不限于基于类的继承,而是指具有方法签名的类型定义。

然而,它也在Web接口定义语言的非常特定的上下文中使用了术语interface,web存储规范实际上使用了web接口定义语言来define Storage as an interface。这些WebAPI可以用多种语言实现(称为“绑定”),但JS最为常见。WebIDL规范甚至定义了how such an interface is to be represented in JavaScript ( "ECMAScript绑定“),特别是接口的线性继承是使用接口对象和它们的.prototype之间的原型继承实现的(基本上就像使用class Storage extends …一样)。这意味着localStorage instanceof StorageStorage.prototype.hasOwnProperty('getItem')的工作方式与预期一致。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67050557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档