首先,不,我并不想为我的 JavaScript 代码创建任何类似 Java 的接口。我到处都见过这些问题,虽然我对 JavaScript 来说还是个相对新手,但我知道这些不是该语言的一部分。
不过,我很好奇它的实际用途是什么interface
关键字是。例如,Math
是一个接口,包含定义(但不包含实现)。我believe(可能是完全错误的)这些是为语言的定义者提供一种方法来强制在各种 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
}
}
一个纯粹人为的例子,但是以这种方式命名“模块”是否不符合习惯用法?
好的,与其他答案一样,您知道关键字界面在 Javascript 世界中还没有真正的用例。
Your Math例子让我怀疑你正在谈论一种设计模式,称为模块模式,广泛用于确定 Javascript 代码的范围。有很多方法可以使代码模块化。例如,就像 OddDev 回答你一样,著名的原型模式可以以模块化方式嵌入您的代码(就像您的Math例子)。这里是揭示原型模式示例还有private变量和函数提供额外的灵活性:
/* 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;
})();
但这还不是全部。其他选项包括范围模块模式, POJO模块模式还有很多。看一下如何编写高度可扩展和可维护的 JavaScript:模块 http://www.innoarchitech.com/scalable-maintainable-javascript-modules/,它有一组非常简单但又详尽的示例。
到目前为止,我们讨论了普通的 Javascript。如果您有能力在代码中使用库,那么令人惊叹的库,例如要求, CommonsJS可以在这方面帮助您吗盒子外面功能。看看 Addy Osmani 的帖子使用 AMD、CommonJS 和 ES Harmony 编写模块化 JavaScript http://addyosmani.com/writing-modular-js/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)