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 做了两件事:
- 它创建一个新的对象(实例)汽车()并将其分配给一个变量。
- 它将对象的构造函数属性(即“颜色”)设置为汽车。
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)
Parameters Used:
value1 : It is the first value to be compared.
value1 : It is the second value to be compared.
Return Value:
Object.is() returns a boolean indicating whether the two arguments are same or not.
下面提供了上述函数的示例。
例子:
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