js刪除對象屬性的多種方法舉例
1.將屬性設置為 undefined
屬性本身仍將存在于對象中,它還會改變原始對象。
const pet = {
species: 'dog',
age: 3,
name: 'celeste',
gender: 'female'
};
pet.gender = undefined;
Object.keys(pet); // ['species', 'age', 'name', 'gender']
2.使用 delete 操作符
delete 將完全從對象中刪除屬性,會導致原始對象的發(fā)生改變,但速度很慢。
const pet = {
species: 'dog',
age: 3,
name: 'celeste',
gender: 'female'
};
delete pet.gender;
Object.keys(pet); // ['species', 'age', 'name']
- delete操作符移除對象指定屬性,刪除成功返回true,否則返回false。
- 刪除的屬性不存在,delete不會起任何作用 ,但是仍會返回true。
- 如果原型鏈有同名屬性,只會刪除自身的屬性。
- delete不能刪除全局作用域函數以及作用域中用let或const聲明的屬性。
- delete可以刪除對象的函數。
- 不可設置屬性不能被刪除。比如Math、Array、Object內置對象屬性以及使用Object.defineProperty()方法設置的屬性。
3.使用對象解構
通過用展開運算符(…)可以將需要省略特定屬性的對象解構到新對象。這個技巧在需要刪除多個屬性時特別有用,并且不會更改原始對象。
const pet = {
species: 'dog',
age: 3,
name: 'celeste',
gender: 'female'
};
const { gender, ...newPet } = pet;
Object.keys(pet); // ['species', 'age', 'name', 'gender']
Object.keys(newPet); // ['species', 'age', 'name']
4.使用Reflect
ES6新增的方法,Reflect.deleteProperty(對象,屬性名),返回一個布爾值。
const pet = {
species: 'dog',
age: 3,
name: 'celeste',
gender: 'female'
};
Reflect.deleteProperty(pet, 'gender')
Object.keys(pet); // ['species', 'age', 'name']
5.刪除數組元素
- delete
delete arr[0];
刪除后數組長度不變,原索引下元素變?yōu)閚ull。
- splice
會改變原數組。
補充:delete 運算符刪除對以前定義的對象屬性或方法的引用
不可以刪除的如下:
1通過var定義的變量 var a=1;delete a//false
2 聲明后的函數 function a(){};delete a//false
3 prototype定義的屬性 a.prototype.b=2;delete b//false
4 函數傳進來的參數 function(a){delete a//false}
5 內建對象 delete arguments//false
可刪除的如下:
1 未定義的變量 b=1;delete b;//true
2 刪除對象的屬性 var obj={x:1};delete obj.x;//true
總結
到此這篇關于js刪除對象屬性的多種方法的文章就介紹到這了,更多相關js刪除對象屬性內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript實現獲取某個元素相鄰兄弟節(jié)點的prev與next方法
這篇文章主要介紹了JavaScript實現獲取某個元素相鄰兄弟節(jié)點的prev與next方法,涉及JavaScript基于函數的判定及調用previousSibling與nextSibling的相關技巧,需要的朋友可以參考下2016-01-01

