gpt4 book ai didi

MDN 中的 JavaScript 接口(interface)

转载 作者:行者123 更新时间:2023-12-04 00:50:23 28 4
gpt4 key购买 nike

据我所知 JavaScript,基于原型(prototype)而不是类的 OOP 不考虑接口(interface),而是依赖于鸭子类型。
然而,我经常可以在 MDN 在线文档中看到一些描述为“接口(interface)”的对象,例如此处的存储:
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 称为“接口(interface)”,在什么意义上:它是浏览器开发人员遵守的规范吗?而不是基于类的范式中的严格“接口(interface)”?
提前谢谢你,很抱歉这个奇怪的问题。只是想加深我对ES的理解。

最佳答案

它不是具有可以实例化的构造函数的类,因此我们不称它为类。它也不是原型(prototype)对象。
MDN 使用术语 interface在通用的 OOP 含义中,它不限于基于类的继承,而是指具有方法签名的类型定义。
但是,它也使用术语 interface在 Web 接口(interface)定义语言的非常具体的上下文中,Web 存储规范用于 define Storage as an interface 的确。这些 WebAPI 可以用多种语言实现(称为“绑定(bind)”),尽管 JS 是最常见的。 WebIDL 规范甚至定义了 how such an interface is to be represented in JavaScript (“ECMAScript 绑定(bind)”),特别是接口(interface)的线性继承是使用接口(interface)对象及其.prototype 之间的原型(prototype)继承来实现的。 s(基本上就像使用 class Storage extends … 一样)。这意味着 localStorage instanceof StorageStorage.prototype.hasOwnProperty('getItem')按预期工作。

关于MDN 中的 JavaScript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67050557/

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