gpt4 book ai didi

javascript函数重载

转载 作者:行者123 更新时间:2023-11-30 13:37:55 25 4
gpt4 key购买 nike

我可以执行以下操作吗?

function contains(element) {

// if the element is a Vertex object, do this
if (element instanceof Vertex) {

var vertex = element;
for ( var index in self.verticies) {
if (self.verticies[index].id == vertex.id) {
return true;
}
}
return false;
}
// else if the element is an Edge object, do this
else if (element instanceof Edge) {

var edge = element;
for ( var index in self.verticies) {
if (self.verticies[index].id == edge.id) {
return true;
}
}
return false;
} else {
// shouldn't come here
return false;
}
};

基本上...我希望能够调用 contains() 并将它传递给 Vertex 对象或 Edge 对象,但我不想有重复的代码。这是正确的方法吗?此外,我是否正确处理了赋值 var vertex = element/var edge = element ?我想将 element 分配给另一个 Vertex/Edge 对象并将其用于我的查找。

如果我需要澄清,请告诉我。

谢谢,赫里斯托

最佳答案

您的代码应该可以正常工作。

但是请注意,编写 var edge = element 没有任何意义(除了清晰度,这是一件好事)。
Javascript 变量是无类型的; edgeelement 没有区别。

此外,您可能应该抛出异常而不是

// shouldn't come here
return false;

最后,您为什么要在 self.verticies 中搜索 Edge

请注意,顺便说一句,您仍然有重复的代码。
您可以像这样重写您的函数:

function contains(element) {
var searchSet;

// if the element is a Vertex object, do this
if (element instanceof Vertex)
searchSet = self.verticies;
else if (element instanceof Edge)
searchSet = self.edges;
else
throw Error("Unexpected argument");

for (var i = 0; i < searchSet.length; i++) {
if (searchSet[i].id == element.id)
return true;
}
return false;
}

关于javascript函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3869173/

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