Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MDN中的JavaScript接口_Javascript_Interface - Fatal编程技术网

MDN中的JavaScript接口

MDN中的JavaScript接口,javascript,interface,Javascript,Interface,据我所知,JavaScript是基于原型而非类的OOP,它不考虑接口,而是依赖于类型 然而,在MDN在线文档中,我经常可以看到一些被描述为“接口”的对象,例如此处的存储: 实际上,window.Storage是存在的,并且是一个函数,但不是构造函数或工厂,如果调用它就会失败。它没有该页面中描述的成员,而window.localStorage则没有。 页面 指向window.Storage作为window.localStorage访问的对象。我知道window.localStorage是一个本

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

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

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


指向window.Storage作为window.localStorage访问的对象。我知道window.localStorage是一个本机对象,但我想了解window.Storage的作用,以及为什么MDN将其称为“接口”,从什么意义上讲:它是浏览器开发人员遵守的规范,而不是基于类的范例中所期望的严格“接口”


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

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

MDN使用通用OOP含义中的术语,它不限于基于类的继承,而是指带有方法签名的类型定义


但是,它也在Web接口定义语言的非常特定的上下文中使用了该术语,Web存储规范确实使用了该术语。这些WebAPI可以用多种语言实现(称为“绑定”),不过JS是最常见的。WebIDL规范甚至定义了(“ECMAScript绑定”),特别是接口的线性继承是使用接口对象及其
.prototype
之间的原型继承实现的(基本上就像使用
类存储扩展…
)。这意味着
localStorage instanceof Storage
Storage.prototype.hasOwnProperty('getItem')
按预期工作。

Q:为什么“扭曲”术语适用于其他不同的语言?为什么不按照JS本身的术语学习和理解它呢?推荐书:。同样:考虑熟悉自己。@ PaulSM4为什么不只是更仔细地阅读问题?@ PaulsM4你是否打算对一个不同的问题进行评论?“这是浏览器开发者坚持的一个规范”吗?事实上,你会在Web规范中发现同样类型的接口,我确实“用自己的术语理解JS”,这就是为什么我不理解语言中的“接口”,而这种语言在结构上和哲学上都无法实施这样的构造。Typescript不是Javascript,也不是问题的固有特性。不过,谢谢你的回答。