delete操作符的使用介绍

192 阅读2分钟

一、delete的作用:

  • 作用:delete 操作符可以用于删除对象(array obj regexp)的某个属性;
  • 工作中使用场景:当调用API接口时,如果直接把整个表单对象当做参数发送时,某些参数后端可能不需要,如上一次流程的流程ID,此时可以使用 delete 操作符删除参数对象中不需要属性,使得调用接口成功
  • 例如:delete param.pwdList;
// 注意:如果这个vue组件是多次复用组件,要小心是否会影响其他节点
pwdButtonAllowForWlbg(){
    let params = {}; //定义参数对象合集,不要在调用api方法时
    params = this.applyInfo.ppmMajorMaintenancePlanDto; //为参数空对象赋值
    params.instancid = this.flowItem.processInstID; //为参数对象增加特定属性instancid
    delete params.pwdList; //delete操作符,删除params对象中用不到的属性
    let data = common.paramsFormat(params); //处理参数格式
    isPwdButtonAllow(data).then(res => {
        if(res.data.status == 200){
            this.$set(
                this.applyInfo.ppmMajorMaintenancePlanDto,
                "daochu",
                res.data.results.daochu
            );
            this.$set(
                this.applyInfo.ppmMajorMaintenancePlanDto,
                "update",
                res.data.results.update
            );
        }
    })
}

二、delete的注意点:

  • 1.1、delete 操作符返回值:bool类型,成功删除的时候回返回true,否则返回false。
  • 1.2、如果删除的属性在对象中不存在,那么delete将不会起任何作用,但仍会返回true;
function fun(){
    this.name = '张三'; 
}

var obj = new fun();
console.log(obj.name);// 张三
delete obj.name; // true
delete obj.age; // true 属性不存在仍会返回true
console.log(obj.name); //undefined 已删除
  • 2.1、delete 操作符可以删除没有使用var关键字声明的全局变量(直接定义在window上面的属性);
  • 2.2、任何使用 var 声明的属性不能从全局作用域或函数的作用域中删除;
  • 2.3、除了在全局作用域中的函数不能被删除,在对象(object)中的函数是能够用delete操作删除的。
A = 1;
var B = 1;

delete A; // true
delete B; // false

var obj = {
    func: function () {}
}
delete obj.func // true
  • 3、delete只能删除对象自己的属性,不能删除其原型链上的属性;如果对象的原型链上有一个与待删除属性同名的属性,那么删除属性之后,对象会使用原型链上的那个属性
function fun(){
    this.name = 'mm'; 
}
fun.prototype.age = 18;
var obj = new fun();
delete obj.age;
console.log(obj.age) //18
  • 4、任何用 let 或 const 声明的属性不能够从它被声明的作用域中删除;
  • 5、delete 操作符可以删除数组元素,不会改变数组元素的长度,仅仅是将元素变为 empty
a = [ 1, 2, 3, 4 ]
delete a[1]
console log(a.length) // 4
console log(a) // [ 1, empty, 3, 4 ]