1. 首页
  2. 编程语言

JS对象操作(in、instanceof、delete)运算符

对象操作运算主要是针对对象、数组、函数这 3 类复合型对象执行某种程序,设计的运算符包括 in、instanceof、delete。

归属检测

in运算符能够检测左侧操作数是否为右侧操作数的成员。其中,左侧操作数是一个字符串,或者可以转换为字符串的表达式,右侧操作数是一个对象或数组。

示例1

下面代码使用 in 运算符检测属性 a、b、c、valueOf 是否为对象 o 的成员。

  var o = {  //定义对象      a : 1,  //定义属性a      b : function() {}  //定义方法b  }  console.log("a" in o);  //返回true  console.log("b" in o);  //返回true  console.log("c" in o);  //返回false  console.log("valueOf" in o);  //返回true,继承Object的原型方法  console.log("constructor" in o);  //返回true,继承Object的原型属性

instanceof运算符能够检测左侧的对象是否为右侧类型的示例。

示例2

下面代码使用 instanceof 检测数组 a 是否为 Array、Object 和 Function 的示例。

  var a = new Array();  //定义数组  console.log(a instanceof Array);  //返回true  console.log(a instanceof Object);  //返回true,Array是Object的子类  console.log(a instanceof Function);  //返回false

如果左侧操作数不是对象,或者操作数不是类型函数,则返回 false。如果右侧操作数不是复合型对象,则将返回错误。

删除属性

delete运算符能够删除指定对象的属性、数组元素或变量。如果删除操作成功,则返回 true;否则返回 false。

示例1

下面代码使用 delete 运算符删除对象 a 的属性 x。

  var a = {  //定义对象a      x : 1,  //定义对象成员      y : 2  //定义对象成员  };  console.log(a.x);  //调用对象成员,返回1  console.log(delete a.x);  //删除对象成员x成功,返回true  console.log(a.x);  //返回undefined,没有找到该对象成员

部分 JavaScript 内置成员和客户端成员,以及使用 var 语句声明的变量不允许删除。

  c = 1;  //初始化变量c,没有使用var语句声明  console.log(delete c);  //返回true,说明删除成功  var b = 1;  //使用var语句声明并初始化变量  console.log(delete b);  //返回false,说明不允许删除  console.log(delete Object.constructor);  //返回true,说明部分内部成员可以被删除

示例2

如果删除不存在的对象成员、数组元素、变量,则返回 true。因此,使用 delete 运算符时,要注意区分成功删除与无效操作。

  var s = {};  //定义对象a  console.log(delete a);  //返回false,说明不允许删除  console.log(delete a.z);  //返回true,说明不存在该属性  console.log(delete b);  //返回true,说明不存在该变量

示例3

下面代码使用 delete 运算符,配合 in 运算符,实现对数组成员执行检测、插入、删除或更新操作。 

  var a = [];  //定义数组对象  if("x" in a){  //如果对象a中存在x       delete a["x"];  //则删除成员x  }else{  //如果不存在成员x      a["x"] = true;  //则插入成员x,并为其赋值true  }  console.log(a.x);  //返回true。查看成员x的值  if(delete a["x"]){  //如果删除成员x成功      a["x"] = false;  //更新成员x的值为false  }  console.log(a.x);  //返回false。查看成员x的值

原文始发于:JS对象操作(in、instanceof、delete)运算符

主题测试文章,只做测试使用。发布者:程序员,转转请注明出处:http://www.cxybcw.com/4062.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code