gpt4 book ai didi

javascript - 正确使用 JavaScript 接口(interface)关键字

转载 作者:数据小太阳 更新时间:2023-10-29 03:48:31 27 4
gpt4 key购买 nike

首先,不,我并没有尝试为我的 JavaScript 代码创建任何类型的 Java 类接口(interface)。我到处都看到了这些问题,虽然我还是 JavaScript 的新手,但我知道这些不是该语言的一部分。

但是,我很好奇 interface 关键字的实际用途是什么。例如,Math 是一个接口(interface),包含定义(但不包含实现)。我相信(也可能是完全错误的)这些是为语言的定义者提供一种方法来强制执行一组要在各种 JavaScript 引擎中实现的行为。对吗?

此外,我希望有一个包含大量实用方法的“静态类”。我喜欢 Math.sqrt(3) 有一个大写的外部命名空间('Math'),以及其中许多逻辑上相似的方法和值。也许正是我的 Java/Ruby 背景让我想要在分组对象上有所作为。这种形式不好吗?

var ShapeInspections = {
isSymmetrical: function (s) {
// determine if shape is symmetrical
},
numAngles: function (s) {
// return the number of angles
}
}

一个纯粹人为的例子,但以这种方式命名“模块”是不是反惯用语?

最佳答案

好的,与其他答案一样,您知道关键字 interface 在 Javascript 世界中还没有真正的用例。

你的数学例子让我怀疑你在谈论一种设计模式,称为模块模式,广泛用于确定Javascript代码的范围。有很多方法可以使您的代码模块化。例如,就像 OddDev 回答你一样,著名的 Prototype Pattern 可以以模块化的方式嵌入你的代码(就像你的 Math 例子)。下面是 Revealing Prototype Pattern 示例,其中还包含 private 变量和函数以提供额外的灵 active :

/* Example from: 
http://www.innoarchitech.com/scalable-maintainable-javascript-modules */
var myPrototypeModule = (function (){

var privateVar = "Alex Castrounis",
count = 0;

function PrototypeModule(name){
this.name = name;
}

function privateFunction() {
console.log( "Name:" + privateVar );
count++;
}

PrototypeModule.prototype.setName = function(strName){
this.name = strName;
};

PrototypeModule.prototype.getName = function(){
privateFunction();
};

return PrototypeModule;
})();

但这还不是全部。其他选项包括Scoped module patternPOJO module pattern等等。看看How to Write Highly Scalable and Maintainable JavaScript: Modules ,它有一组非常简单而详尽的示例。

到目前为止,我们讨论的是纯 Javascript。如果您有能力在代码中使用库,那么RequirejsCommonsJS 等惊人的库集可以帮助您使用 开箱即用的功能。查看 Addy Osmani 关于 Writing Modular JavaScript With AMD, CommonJS & ES Harmony 的帖子.

关于javascript - 正确使用 JavaScript 接口(interface)关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29600453/

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