关于delete
js有自己的垃圾回收机制,因此delete用的时候不是很多,但是了解一下也还是有好处的。
- 如果删除成功,返回true;反之,false;
- 如果试图删除不存在的变量, delete不会起任何作用(废话),但是返回true;
delete只能删除对象自己的属性,不能删除其原型链上的属性
123456789101112131415function Person () {this.name = 'jim';}Person.prototype.height = '1.1';var a = new Person();a.name; // jima.height; // heightdelete a.name; // truedelete a.height; // trueconsole.log(a.name); // undefinedconsole.log(a.height); // 1.1用var声明的变量不能从全局或者函数作用域删除
4.1 全局作用域中的函数不能被delete, 不论是使用关键字声明还是使用函数表达式的
4.2 隶属于某一对象的方法可以被delete1234567891011var1 = 1;var var2 = 1;delete var1; // truedelete var2; // falsevar obj = {func: function () {}}delete obj.func // true使用let和const声明的变量不能从作用域范围被delete
Non-configurable的属性不能被delete(可通过Object.defineProperty()来修改)
123var Employee = {};Object.defineProperty(Employee, 'name', {configurable: false});delete Employee.name; // false