📜  JavaScript 中的 Object.is()

📅  最后修改于: 2022-05-13 01:58:09.866000             🧑  作者: Mango

JavaScript 中的 Object.is()

JavaScript 中的对象和对象构造函数?
在面向对象编程的现实世界中,我们已经知道类和对象的重要性,但与其他编程语言不同的是,JavaScript 没有其他语言中看到的传统类。但是 JavaScript 有对象和构造函数,它们大多以相同的方式执行相同类型的操作。

  • 构造函数是与“new”关键字一起使用的通用 JavaScript 函数。 JavaScript 中的构造函数有两种类型,即内置构造函数(数组和对象)和自定义构造函数(为特定对象定义属性和方法)。
  • 当我们需要一种方法来创建可以多次使用的对象“类型”而不必每次都重新定义对象时,构造函数会很有用,这可以使用对象构造函数来实现。使用构造函数的名称来区分它们与常规函数是一种惯例。

例如,考虑以下代码:

function Automobile(color) {
  this.color=color;
}

var vehicle1 = new Automobile ("red");

函数“Automobile()”是一个对象构造函数,它的属性和方法,即“color”是通过在它的前面加上关键字“this”来声明的。使用对象构造函数定义的对象然后使用关键字“new”成为即时对象。
当 new Automobile() 被调用时,JavaScript 做了两件事:

  1. 它创建一个新的对象(实例)汽车()并将其分配给一个变量。
  2. 它将对象的构造函数属性(即“颜色”)设置为汽车。

Object.is() 方法
Object.is() 方法用于判断两个值是否相同。
如果两个值具有以下属性之一,则它们可以相同:

  • 如果两个值都未定义。
  • 如果两个值都为空。
  • 如果两个值都是真或假。
  • 如果两个字符串的长度相同,字符相同且顺序相同。
  • 如果两个值都是数字并且都是“+0”。
  • 如果两个值都是数字并且都是“-0”。
  • 如果两个值都是数字并且都是“NaN”或者都是非零且都不是 NaN 并且都具有相同的值。

Object.is() 接受两个参数,它们是要比较的值,并返回一个布尔值,指示两个参数是否相同。
Object.is() 方法和“==”运算符的区别
“==”和“===”运算符将数值“+0”和“-0”视为相等,而 Object.is() 方法将它们视为不相等。除此之外,“==”和“===”运算符不会将 Number.Nan 视为等于 Nan。
应用:

  • Object.is() 用于比较两个字符串。
  • Object.is() 用于比较两个数字。
  • Object.is() 用于比较两个数字的极性。
  • Object.is() 用于比较两个对象。

句法:

Object.is(value1, value2)

下面提供了上述函数的示例。
例子:

Input : Object.is('geeksforgeeks', 'geeksforgeeks');
Output: true

说明:在上面的示例中,Object.is() 方法返回 true,因为作为参数传递的两个字符串的长度相同,字符相同且顺序相同。

Input : Object.is('geeksforgeeks', 'gfg');
Output : false

解释:在上面的示例中,Object.is() 方法返回 false,因为作为参数传递的两个字符串的长度不同,字符相同且顺序相同。

Input : Object.is(0,-0);
Output: false

说明:在上面的示例中,Object.is() 方法返回 false,因为作为参数传递的两个数字具有不同的极性。

Input : var check = { a: 100 };
        Object.is(check, check);  
Output: true

说明:在上面的示例中,已创建对象“check”并作为参数传递给 Object.is() 方法。它返回 true,因为这两个参数都是一个对象并且相互比较。
下面提供了上述函数的代码。
代码 1:

javascript


javascript


javascript


javascript


输出 :

true

代码 2:

javascript


输出 :

false

代码 3:

javascript


输出 :

false

代码 4:

javascript


输出 :

false

例外:

  • “==”和“===”运算符将数值“+0”和“-0”视为相等,但 object.is() 方法对它们的处理方式不同。
  • Object.is() 方法在比较之前不会强制值,即使它们是不同的数据类型。

支持的浏览器:

  • 铬 30 及以上
  • Edge12 及以上
  • 火狐 22 及以上
  • Opera17及以上
  • Safari 9 及更高版本

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is