JavaScript delete 属性的使用_javascript技巧

delete 是删除对象的一个属性,例如对于一个对象,
var obj = {key:5};
delete obj.key就是删除该对象的key属性,这个没什么问题,但当对象的原型prototype对象也存在该属性时,就值得注意了。

复制代码 代码如下:

var A = function(){};
A.prototype.testMe = true;
var a = new A();
//覆盖原型属性
a.testMe = true;
if(a.testMe){
// 一些关键代码...
// ....
//删除这属性
delete a.testMe;
}
//第二段 ---------------------------
// 在其它模块中
if(a.testMe){
// 一些关键代码...
// ....
}

第二段是值得注意的,不要以为a中testMe已尼删除了就不存在了,所以a.testMe就为undefined,即为假,其实它通过原型访问还是存在的,还是true!
这里不留神就中招了。
//附:
检测对象是否存在某属性, 包括原型链的:
if ('attrName' in obj)…
检测对象是否存在某属性,是对象本身的,而非原型链的:
obj.hasOwnProperty('attrName')

时间: 2024-11-16 15:09:55

JavaScript delete 属性的使用_javascript技巧的相关文章

JavaScript Length 属性的总结_javascript技巧

关于javascript length属性的总结请看以下内容详解. 一.StringObject中的length     length属性是返回字符串的字符数目.     例如: // 普通字符串 var str = "abcdef"; console.log(str.length); // 6 // 数组 var str1 = new Array(1,2,3,4); console.log(str1.length); // 4 // 数组与字符串 var str2 = str1 +

JavaScript delete操作符应用实例_javascript技巧

今天在看prototype代码时发现了delete这个操作符 复制代码 代码如下: unset: function(key) { var value = this._object[key]; delete this._object[key]; return value; } 查了一下手册, delete 运算符 从对象中删除一个属性,或从数组中删除一个元素. delete expression expression 参数是一个有效的 JScript 表达式,通常是一个属性名或数组元素. 说明 如

JavaScript prototype属性详解_javascript技巧

每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和方法. 私有变量.函数在具体说prototype前说几个相关的东东,可以更好的理解prototype的设计意图.之前写的一篇JavaScript 命名空间博客提到过JavaScript的函数作用域,在函数内定义的变量和函数如果不对外提供接口,那么外部将无法访问到,也就是变

JavaScript prototype属性深入介绍_javascript技巧

每个函数创建时默认带有一个prototype属性,其中包含一个constructor属性,和一个指向Object对象的隐藏属性__proto__.constructor属性的值为该函数的对象.在一个函数前面加上new来调用,则会创建一个隐藏连接到该函数prototype成员的新对象(由__proto__属性来链接),同时函数的this将会被绑定到那个新对象上. 函数总是返回一个值:如果没有指定返回值,就返回undefined:如果当做构造函数来调用,且返回值不是对象,则返回this(该新对象):

Javascript对象属性方法汇总_javascript技巧

数组(Array):系列元素的有序集合 属性: length:用于获取数组元素的个数,既最大下标加 1 方法: sort(function):在未指定排序号的情况下,按照元素的字母顺序排列,如果不是字符串类型则转换成字符串,在排序; reverse():颠倒数组中元素的顺序: concat(array1,arrayn):用于将N个数组合并到array1数组中: join(string):用于将数组中元素合并为字符串,string为分隔符,如省略参数,则直接合并,不加分隔: slice(start

浅谈javascript 函数属性和方法_javascript技巧

        每个函数都包含两个属性:length 和 prototype         length:当前函数希望接受的命名参数的个数         prototype:是保存他们所有实力方法的真正所在 复制代码 代码如下:         function sayName(name) {             alert(name);         }         function sum(num1, num2) {             return num1 + num2

详解JavaScript中的属性和特性_javascript技巧

JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaScript中对象的本质.对象与类的关系.对象与引用类型的关系 对象属性如何进行分类 属性中特性的理解  第一部分:理解JavaScript中对象的本质.对象与类的关系.对象与引用类型的关系 对象的本质:ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数.即对象是一组没有特定顺序的值,对象的每个属性或方法都有一个名字

js delete 用法(删除对象属性及变量)_javascript技巧

1,对象属性删除 function fun(){ this.name = 'mm'; } var obj = new fun(); console.log(obj.name);//mm delete obj.name; console.log(obj.name); //undefined 2,变量删除 var name = 'lily'; delete name; console.log(name); //lily 直接用delelte删除不了变量 3,删除不了原型链中的变量 fun.proto

JavaScript精炼之构造函数 Constructor及Constructor属性详解_javascript技巧

除了创建对象,构造函数(constructor) 还做了另一件有用的事情-自动为创建的新对象设置了原型对象(prototype object) .原型对象存放于 ConstructorFunction.prototype 属性中. 例如,我们重写之前例子,使用构造函数创建对象"b"和"c",那么对象"a"则扮演了"Foo.prototype"这个角色: // 构造函数 function Foo(y) { // 构造函数将会以特