一、delete的作用:
- 作用:delete 操作符可以用于删除对象(array obj regexp)的某个属性;
- 工作中使用场景:当调用API接口时,如果直接把整个表单对象当做参数发送时,某些参数后端可能不需要,如上一次流程的流程ID,此时可以使用 delete 操作符删除参数对象中不需要属性,使得调用接口成功
- 例如:delete param.pwdList;
pwdButtonAllowForWlbg(){
let params = {};
params = this.applyInfo.ppmMajorMaintenancePlanDto;
params.instancid = this.flowItem.processInstID;
delete params.pwdList;
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;
delete obj.age;
console.log(obj.name);
- 2.1、delete 操作符可以删除没有使用var关键字声明的全局变量(直接定义在window上面的属性);
- 2.2、任何使用 var 声明的属性不能从全局作用域或函数的作用域中删除;
- 2.3、除了在全局作用域中的函数不能被删除,在对象(object)中的函数是能够用delete操作删除的。
A = 1;
var B = 1;
delete A;
delete B;
var obj = {
func: function () {}
}
delete obj.func
- 3、delete只能删除对象自己的属性,不能删除其原型链上的属性;如果对象的原型链上有一个与待删除属性同名的属性,那么删除属性之后,对象会使用原型链上的那个属性
function fun(){
this.name = 'mm';
}
fun.prototype.age = 18;
var obj = new fun();
delete obj.age;
console.log(obj.age)
- 4、任何用 let 或 const 声明的属性不能够从它被声明的作用域中删除;
- 5、delete 操作符可以删除数组元素,不会改变数组元素的长度,仅仅是将元素变为 empty
a = [ 1, 2, 3, 4 ]
delete a[1]
console log(a.length)
console log(a)