在 JavaScript 中实现接口
Implementing interfaces in JavaScript
我正在学习 Java脚本。我的背景通常是 Java 和 C#。在那些环境中,我可以使用接口。很多时候,我的模式看起来像这样:
var implementers = GetForInterface<ISomeInterface>();
foreach (var implementer in implementers)
{
implementer.SomeMethod();
}
我的问题是,如何在 JavaScript 中做类似的事情?我似乎无法弄清楚的主要是 GetForInterface
部分。我不确定这种设计模式叫什么。
谢谢
Javascript、
中没有接口
你所说的设计模式是service locator,但通常情况下这不是走下去的方式javascript。
您可以使用某些库来执行此操作:service-locator 或使用 classes 和继承自行实现。
一个简单的例子是保存一个继承自相同 class 的实例数组,您将能够遍历它们(并根据需要为所有实例激活相同的方法)
我见过的最简单的方法是使用存根并根据需要覆盖它们。例如:
function getter(obj){}
function objChecker()
{
try
{
/* Check argument length and constructor type */
if (getter.length === 1 && getter.constructor === Function)
{
console.log("Correct implementation");
return true;
}
else
{
console.log("Wrong implementation");
return false;
}
}
catch(e)
{
return NaN;
}
finally
{
console.log(JSON.stringify(getter))
}
}
getter = getter;
objChecker();
getter = [];
objChecker();
getter = {};
objChecker();
getter = RegExp;
objChecker();
getter = Function;
objChecker();
参考资料
我正在学习 Java脚本。我的背景通常是 Java 和 C#。在那些环境中,我可以使用接口。很多时候,我的模式看起来像这样:
var implementers = GetForInterface<ISomeInterface>();
foreach (var implementer in implementers)
{
implementer.SomeMethod();
}
我的问题是,如何在 JavaScript 中做类似的事情?我似乎无法弄清楚的主要是 GetForInterface
部分。我不确定这种设计模式叫什么。
谢谢
Javascript、
中没有接口你所说的设计模式是service locator,但通常情况下这不是走下去的方式javascript。
您可以使用某些库来执行此操作:service-locator 或使用 classes 和继承自行实现。
一个简单的例子是保存一个继承自相同 class 的实例数组,您将能够遍历它们(并根据需要为所有实例激活相同的方法)
我见过的最简单的方法是使用存根并根据需要覆盖它们。例如:
function getter(obj){}
function objChecker()
{
try
{
/* Check argument length and constructor type */
if (getter.length === 1 && getter.constructor === Function)
{
console.log("Correct implementation");
return true;
}
else
{
console.log("Wrong implementation");
return false;
}
}
catch(e)
{
return NaN;
}
finally
{
console.log(JSON.stringify(getter))
}
}
getter = getter;
objChecker();
getter = [];
objChecker();
getter = {};
objChecker();
getter = RegExp;
objChecker();
getter = Function;
objChecker();
参考资料