相关疑难解决方法(0)

如何为JavaScript Set自定义对象相等性

新的ES 6(Harmony)引入了新的Set对象.Set使用的身份算法类似于===运算符,因此不太适合比较对象:

var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]
Run Code Online (Sandbox Code Playgroud)

如何自定义Set对象的相等性以进行深层对象比较?有没有像Java这样的东西equals(Object)?

javascript set ecmascript-harmony

142
推荐指数
5
解决办法
3万
查看次数

在JavaScript中重载算术运算符?

考虑到这个JavaScript"类"定义,这是我能想到的最好的方法来解决这个问题:

var Quota = function(hours, minutes, seconds){
    if (arguments.length === 3) {
        this.hours = hours;
        this.minutes = minutes;
        this.seconds = seconds;

        this.totalMilliseconds = Math.floor((hours * 3600000)) + Math.floor((minutes * 60000)) + Math.floor((seconds * 1000));
    }
    else if (arguments.length === 1) {
        this.totalMilliseconds = hours;

        this.hours = Math.floor(this.totalMilliseconds / 3600000);
        this.minutes = Math.floor((this.totalMilliseconds % 3600000) / 60000);
        this.seconds = Math.floor(((this.totalMilliseconds % 3600000) % 60000) / 1000);
    }

    this.padL = function(val){
        return (val.toString().length === 1) ? "0" + val : val;
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript operator-overloading

68
推荐指数
8
解决办法
6万
查看次数

覆盖JavaScript中比较运算符的默认行为

我有一个自定义的Javascript类(使用John Resig的简单Javascript继承创建).我希望能够比较这个类的两个实例,使用==,<,>,>=,和<=符号.

如何覆盖自定义类的比较器?

javascript inheritance overriding class object

10
推荐指数
3
解决办法
6226
查看次数

如何在JavaScript中定义对象的比较方式

我想定义一个JavaScript类,Foo.

Foo = function(value){
    this.value = value;
};
Run Code Online (Sandbox Code Playgroud)

我将创建我的Foo的"实例":

foo1 = new Foo(1);
foo2 = new Foo(1);
Run Code Online (Sandbox Code Playgroud)

我希望我的Foo实例可以使用标准的==相等运算符相互比较:

foo1 == foo2;      // this should be true
Run Code Online (Sandbox Code Playgroud)

我找不到办法做到这一点.我以为我正在使用该valueOf()函数,但这仅在比较的一侧是基元时才有用,而不是如上所述两者都是对象类型.

我是否遗漏了一些非常类似于Ruby的东西

def ==(obj); end
Run Code Online (Sandbox Code Playgroud)

javascript comparison equals

7
推荐指数
2
解决办法
2785
查看次数

如何重载JavaScript对象的运算符相等性

我用Dojo.declare创建了新对象.如何为对象重载operator ==?

javascript dojo

7
推荐指数
2
解决办法
4450
查看次数

你能覆盖 == 在 Javascript 中的作用吗?

在 Python 中,可以==通过__eq__为您的类定义一个方法来覆盖它的作用。

是否可以在 Javascript 中做类似的事情?如果是这样,你怎么做?

我的理解是,默认情况下(也许总是,如果您不能覆盖它),Javascript 只是检查当您执行==. 如何直接获取地址?

我问所有这些是因为我正在尝试调试一些很久以前写过的代码。据我所知,两个对象是相同的,但==正在返回false. 我试图找出原因......我想知道是否可能==在某个地方被覆盖(但它是一个很大的代码库,我不知道要搜索什么)或者对象是否或是否可能被复制,所以它们存在于不同的地址,尽管据我所知是相同的。知道如何获取地址将有助于确认该理论并为我提供线索以解决问题。

javascript equality comparison-operators

5
推荐指数
1
解决办法
4043
查看次数

重写 Javascript Map 的相等函数

我想在 Javascript 中创建一个 Map(字典),其中键是数字数组,值是某个对象。我想从地图中检索以前使用相同数组内容存储的值 - 即,如果我有一个包含某些内容的数组,我想检索以前为具有相同内容的数组存储的值(如果有)。

在大多数其他语言中,这很容易。您可以重写 Map 的相等函数,以便测试具有相同内容的两个数组相等。这似乎不可用 Javascript。映射键正在使用 SameValueZero 进行测试,它仅在两个对象是同一对象时才认为它们相等。

有没有一种方法可以覆盖相等性,或者是否有另一种标准方法可以在 Javascript 中处理这种情况?

javascript dictionary

5
推荐指数
1
解决办法
2654
查看次数