|
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')
JavaScript技術:JavaScript delete 屬性的使用,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。