javascript delete删除属性的注意点简单介绍
关于delete更多相关内容可以参阅javascript delete运算符一章节。
本章节只是介绍一下常见的delete删除属性需要注意的地方,希望能够给需要的朋友带来参考作用。
delete只是断开属性和宿主对象的联系,看如下代码:
var obj = {antzone:{url:"pipipi.net"}}; var innerObj = obj.antzone; console.log(obj.antzone.url); delete obj.antzone; console.log(obj.antzone); console.log(innerObj.url);
由此可见,只是断开属性和宿主对象的联系,而没有彻底的删除属性值。
delete能够删除自有属性,但是不能够删除继承的属性,看如下代码实例:
function inherit(p){ if(p == null){ // 不能从null中继承 throw TypeError(); } if(Object.create){ return Object.create(p); } var t = typeof p; if(t !== "object" || t !== "function"){ //要继承的对象 类型要符合 throw TypeError(); } function f(){ }; //定义一个空的构造函数 f.prototype = p; //原型指向要继承的对象p return new f(); //创建f对象,此对象继承自p } var obj = {url:"pipipi.net"}; var newObj = inherit(obj); newObj.age = 3; console.log("url = "+newObj.url+" age = "+newObj.age); delete newObj.url; delete newObj.age; console.log("url = "+newObj.url+" age = "+newObj.age);
上面的代码说明继承的属性是不可以被删除的,上面的代码可能不少朋友有点看不懂,下面就进行一下注释。
一.代码注释:
(1).function inherit(p){ },此函数实现了继承效果,参数p是要继承的原型对象实例。
(2).if(p == null){
throw TypeError();
},不能从null中继承,会抛出一个错误。
(3).if(Object.create){
return Object.create(p);
},首先判断当前浏览器是否支持Object.create()方法,如果支持则创建一个原型对象是p的对象。
(4).var t = typeof p,判断p的类型。
(5).if(t !== "object" || t !== "function"){
throw TypeError();
},传入的p一定要是引用类型,如果传入的是简单类型的就会报错。
(6).function f(){ },创建一个空的函数,这样比较干净。
(7).f.prototype = p,设置它的原型对象为p。
(8).return new f(),返回对象实例。
二.相关阅读:
(1).Object.create()方法可以参阅Object.create()一章节。
(2).prototype可以参阅javascript prototype原型一章节。