【问题标题】:Preventing object comparision in javascript [duplicate]防止javascript中的对象比较[重复]
【发布时间】:2021-08-02 07:37:57
【问题描述】:

JS中有没有办法防止对象比较?

假设我有:

function Person(data) {
  var that = {};
  that.name = data.name;
  return that;
}

let p = new Person({'name':'John'})

现在我想让它抛出一个错误:

p == 2

【问题讨论】:

  • 我不这么认为。额外的好处或用例是什么?
  • 您只想在比较数字时抛出异常,还是在比较任何东西时抛出异常?
  • @Bergi 与任何事物进行比较时。
  • @EmielZuurbier 用例防止代码库的其他用户犯错,因为我的示例总是返回 false。

标签: javascript javascript-objects


【解决方案1】:

我能想到的唯一方法是依靠比较运算符(==)使用字符串转换来比较不同类型的操作数:

function Person(data) {
  var that = {};
  that.name = data.name;
  return that;
}

let p = new Person({'name':'John'});

p.toString = function() {
  throw 'Error!';
}

p == 2

当然,这也会导致该对象的所有其他字符串转换出错,并且它不适用于严格比较运算符 (===)。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多