gpt4 book ai didi

javascript - JS - 停止对象链接而不会出错

转载 作者:行者123 更新时间:2023-11-29 14:57:44 25 4
gpt4 key购买 nike

我有像棋盘这样的对象数组,每个对象都有 top , down , left , right返回对象邻居的函数。

data.field(3,3).left() //returns field(2,3);

我可以像这样链接它

data.field(3,3).left().left().top().right().down().getName();

但是没有像

这样带负极线的物体

data.field(-1,0)

当给定的绳索为负数或大于对象数组时,很容易检测到。您可以返回 false 或空对象 - 但是当没有返回任何内容并且继续链接时会出现错误

Uncaught TypeError: Object #<error> has no method 'down'

这是 ofc 的事情,但是我怎样才能避免这个错误,并在没有对象返回时停止长链而不会出现停止 js 执行的错误?

让我们说:

data.left().left()/*here there is nothing to return*/.right().right().getName(); //should return false

最佳答案

不是为无效位置返回 null,而是返回一个覆盖定向函数的自定义“null 对象”,只返回一个带有返回“invalid location”的 getName 函数的 null 对象,或者在调用这些函数时抛出异常.

nullObject = {

this.left = function(){return this;}
this.right = function(){return this;}
//etc
this.getName = function(){"Invalid Location"}

}

异常处理可能是这样的

try{
piece.left().right().down().getName()
}
catch(exc){
//handle exception
}

顺便说一句,您实际上是在此处创建一个 monad。如果你让它在接收到空对象时停止计算,那么这就是 maybe monad 的一个例子。 .不过,这比这里的实际问题高出一些理论水平。

关于javascript - JS - 停止对象链接而不会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15208874/

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