In js können Sie das Schlüsselwort delete verwenden, um Attribute im Objekt zu löschen. Das Syntaxformat lautet „Objekt.Attribut löschen“. Der Löschoperator wird verwendet, um ein Attribut eines Objekts zu löschen. Wenn der Löschoperator „true“ zurückgibt, bedeutet dies, dass es gelöscht werden kann, und wenn er „false“ zurückgibt, bedeutet dies, dass es nicht gelöscht werden kann.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Der semantisch korrekte Weg, eine Eigenschaft aus einem Objekt zu löschen, ist die Verwendung des Schlüsselworts delete. 🔜 Optimieren Sie es sehr stark. Eine andere Möglichkeit, dies zu tun, beispielsweise wenn Sie eine große Anzahl von Objekten in einer Schleife bearbeiten, besteht darin, die Eigenschaft auf undefiniert zu setzen.
Aufgrund seiner Natur ist die Leistung des Löschens viel langsamer als die einfache Neuzuweisung zu undefiniert, bis zu 50-mal langsamer.
Beachten Sie jedoch, dass die Eigenschaft nicht vom Objekt entfernt wird. Sein Wert wird gelöscht, aber wenn Sie über das Objekt iterieren, ist es immer noch vorhanden: Die Verwendung von „Delete“ ist immer noch sehr schnell. Sie sollten solche Leistungsprobleme nur untersuchen, wenn Sie einen guten Grund dafür haben, andernfalls wird dies immer vorgezogen haben eine klarere Semantik und Funktionalität.Attribute löschen, ohne das Objekt zu verändern
Erweiterte Informationen:
Der Löschoperator wird verwendet, um ein Attribut des Objekts zu löschen.
Löschoperator direkt verwenden
const car = { color: 'blue', brand: 'Ford' }
Zum Beispiel:
delete car.brand
delete car['brand'] delete car.brand delete newCar['brand']
delete object.property 或 delete object['property']
var person = { name: 'abc' age: 18 } delete person.name console.log(person) // {age: 18}
console.log(delete person.name) //true console.log(delete person.job) //即使删除对象不存在的属性依然返回true
// 构造函数 function Person() { this.name = "张三", this.job = "工程师" } Person.prototype.name = "李四" // 创建实例对象 var p = new Person(); // 只删除p实例的name属性 delete p.name; console.log(p) => // 通过打印如下图,name属性成功删除
接下来看: console.log(p.name) => // '李四' 依然可以访问到
// 声明属性 var a = 1; // 等同于window.a delete a // 严格模式下抛出语法异常 SyntaxError console.log(a); // 1 非严格模式下 console.log(delete a); // 非严格模式下false
// 声明函数 var fn = function () { console.log(1); } delete fn // 严格模式下抛出语法异常 SyntaxError fn() // 1 非严格模式下delete失效, 函数依然存在 // 另外, 除字面量定义外,匿名函数定义函数效果也是一样
// 局部作用域声明属性 funtion fn() { var a = 1; delete a; // 严格模式下抛出语法异常 SyntaxError console.log(a); // 1 console.log(delete a); // 非严格模式下false } fn();
// 局部作用域声明函数 var fn = function() { var fn2 = function() { console.log(1); }; delete fn2 // 严格模式下抛出语法异常 SyntaxError console.log(delete fn2); // false 非严格模式下 fn2(); // 1 } fn();
var person = { name: '张三', showName: function () { console.log(this.name); } } delete person.showName console.log(person.showName) // undefined
console.log(Array.length); // 1 delete Array.length console.log(Array.from); 0
delete Array.prototype //严格模式下抛出异常 console.log(Array.prototype) // 非严格模式下,prototype依然存在, 可以自己试试了,自己动手,丰衣足食 console.log(Array.prototype.join); // 非严格模式下,join方法依然存在
console.log(Array.forEach); // 内置函数 delete Array.forEach // 不用区分严格模式与否 console.log(Array.forEach); // undefined
var person = {}; Object.defineProperty(person, 'name', { value: '张三', configurable: false }) delete person.name // 严格模式下,抛出异常 console.log(person.name); // 张三 console.log(delete person.name); // 非严格模式false
var a = 'abc'; // 属于window 等同于window.a var aVal = Object.getOwnPropertyDescriptor(window, 'a'); console.log(aVal); // aVal输入如下 // { // value: 2, // writable: true, // enumerable: true, // configurable: false // 由于是var声明的属性,所以为false // }
Javascript-Tutorial für Fortgeschrittene
]Das obige ist der detaillierte Inhalt vonSo löschen Sie Attribute in einem Objekt in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!