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


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

    归属检测

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

    示例1

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

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

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

    示例2

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

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

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

    删除属性

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

    示例1

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

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

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

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

    示例2

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

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

    示例3

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

    1. var a = []; //定义数组对象
    2. if("x" in a){ //如果对象a中存在x
    3. delete a["x"]; //则删除成员x
    4. }else{ //如果不存在成员x
    5. a["x"] = true; //则插入成员x,并为其赋值true
    6. }
    7. console.log(a.x); //返回true。查看成员x的值
    8. if(delete a["x"]){ //如果删除成员x成功
    9. a["x"] = false; //更新成员x的值为false
    10. }
    11. console.log(a.x); //返回false。查看成员x的值
  • 相关阅读:
    41页数字政府整体规划方案 —数化万物赋能
    数学小抄:线性回归与协方差
    Java之HashMap中putIfAbsent()方法具有什么功能呢?
    堆排序
    数字孪生在工业制造中的应用领域及技术体系构建
    数据结构 | 单链表SingleList【带你从浅入深真正搞懂链表】
    Electron_基础篇
    日志(四)
    协议-http协议-基础概念04-长短连接-重定向-cookie-缓存-代理
    ZTE MC8020 5G Indoor CPE Review
  • 原文地址:https://blog.csdn.net/unbelievevc/article/details/127995571