亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Javascript中的delete操作符詳細介紹

2019-11-20 14:47:00
字體:
來源:轉載
供稿:網友

一、變量

說到javascript中的delete操作符,還是首先要搞清楚javascript中的變量和屬性之間的關系。

javascript中,變量和對象屬性關系非常微妙,甚至可以很多時候會被等同起來,因為 javascript 在執行腳本之前會創建一個global對象,在瀏覽器中就是window對象,所有的全局變量都是這個global對象的屬性,執行函數時也會創建一個activation對象,所有的局部變量都是這個activation對象的屬性。這些可以大家可以去了解一下javascript作用域和閉包。

復制代碼 代碼如下:
 
//原型中聲明的屬性無法被刪除

var global = 1;
this.global; // 1, 可以通過this來訪問global對象
this.global2 = 2;
global2; // 12
function foo() {
var local = 36;
// 不過無法直接訪問activation,
// 因此無法通過 foo.local 的方式來訪問local變量
}

似乎變量就等同于對象屬性,其實不然,至少對于delete操作符來說還是不一樣的。我的理解是變量聲明是必須通過 var 語句來完成的,未通過var 語句聲明的全局變量都是都是window對象的屬性。這樣就很容易的理解變量和對象屬性的關系了。

二、delete操作符

delete操作符是用來刪除對象屬性的。對于引用類型的值,它也是刪除對象屬性的本身,不會刪除屬性指向的對象。如果有疑問可以看看基本類型和引用類型的值,或者測試下面的代碼:

復制代碼 代碼如下:
 
var o = {};
var a = { x: 10 };
o.a = a;
delete o.a; // o.a屬性被刪除
console.log(o.a); // undefined
console.log(a.x); // 10, 因為{ x: 10 } 對象依然被 a 引用,所以不會被回收

另外,delete o.x 也可以寫作 delete o["x"],兩者效果相同。

三、變量是不能刪除的

通過var聲明的變量和通過function聲明的函數擁有dontdelete特性,是不能被刪除。未通過var聲明的全局變量(全局對象的屬性)

復制代碼 代碼如下:
 
var global = {
    a: 123,
    b: {
        c: 1345
    }
};
delete global; //無效
console.log(global)

obj = {
    a: 123
};
delete obj; // 刪除obj全局變量,window對象的obj屬性
console.log(obj);//obj is not defined

 

四、原型中聲明的屬性和對象自帶的屬性無法被刪除

原型prototype中聲明的屬性和對象自帶的屬性(其實這些屬性也是在原型prototype中的)可以認為是帶有dontdelete的特性的,無法被刪除。例如

復制代碼 代碼如下:
 
//原型中聲明的屬性無法被刪除

function obj() {
    this.x = 1;
}
obj.prototype.x = 2;

var o = new obj();
console.log(o.x); // 1, 構造函數中定義的o.x

delete o.x;
console.log(o.x); // 2, prototype中定義的o.x,即使再次執行delete o.x也不會被刪除

//對象自帶的屬性無法被刪除

var strings = "123456";
console.log(strings.length);//6
delete strings.length;
console.log(strings.length);//依然是6

五、eval語句下的幾個例外

eval執行的代碼中,通過var聲明的變量雖然與正常的var聲明變量同屬于global對象,但它們不具有dontdelete特性,能被刪除。但是eval的代碼中的函數內通過var定義的變量具有dontdelete,不能被刪除。

復制代碼 代碼如下:
eval("var x = 42;");
x; // => 42
delete x;
x; // => referenceerror: x is not defined
eval("function f() { return 12; }");
f(); // => 12
delete f;
f(); // => referenceerror: f is not defined
//eval執行的代碼中,通過var聲明的變量雖然與正常的var聲明變量同屬于global對象,
// 但它們不具有dontdelete特性,能被刪除。
eval("(function () {" +
    " var x = 42;" +
    " delete x;" +
    " return x;" +
    "})();")
// => 42
// eval的代碼中的函數內通過var定義的變量具有dontdelete,不能被刪除。

六、delete的返回值

delete是普通運算符,會返回true或false。當被delete的對象的屬性存在并且擁有dontdelete時 返回false,否則返回true。 這里的一個特點就是,對象屬性不存在時也返回true,所以返回值并非完全等同于刪除成功與否。

復制代碼 代碼如下:
 
function c() {
    this.x = 42;
}
c.prototype.y = 12;
var o = new c();

delete o.x; // true
o.x; // undefined
"x" in o; // false
// o.x存在并且沒有dontdelete,返回true

delete o.y; // true
o.y; // 12
// o自身沒有o.y屬性,所以返回true
// 從這里也可以看到prototype鏈的存在,對象自身屬性和prototype屬性是不同的

delete o; // false
// global.o擁有dontdelete特性所以返回false

delete undefinedproperty; // true
// global沒有名為undefinedproperty的屬性因此返回true

delete 42; // true
// 42不是屬性所以返回true。有的實現會拋出異常(違反ecmascript標準)

var x = 24;
delete x++; // true
x; // 25
// 被刪除的是x++的返回值(24),不是屬性,所以返回true

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品久久国产精品| 亚洲色无码播放| 日本一区二区在线播放| 日韩美女中文字幕| 国产精品稀缺呦系列在线| 伊人久久久久久久久久久久久| 欧美一级大片在线免费观看| 爽爽爽爽爽爽爽成人免费观看| 国产精品网站入口| 久久网福利资源网站| 国产精品国产三级国产aⅴ9色| 一区二区三区四区在线观看视频| 亚洲国产成人在线播放| 亚洲一二三在线| 69av在线视频| 揄拍成人国产精品视频| 欧美久久精品午夜青青大伊人| 国产精品av在线| 日韩精品在线观看一区二区| 午夜精品一区二区三区av| 91国产精品视频在线| 欧美大片在线看免费观看| 欧美成人精品在线观看| 95av在线视频| 国产美女精品视频免费观看| 日本一区二区三区在线播放| 国产精品免费视频久久久| 亚洲第一级黄色片| 日韩在线免费视频| 亚洲一区二区少妇| 国产精品6699| 亚洲自拍偷拍区| 欧美日韩另类字幕中文| 国产精品福利在线观看网址| 岛国视频午夜一区免费在线观看| 亚洲精品日韩av| 日韩国产欧美精品一区二区三区| 蜜臀久久99精品久久久无需会员| 欧美wwwwww| 亚洲精品一区av在线播放| 一区国产精品视频| 久久久女女女女999久久| 自拍偷拍亚洲欧美| 亚洲老板91色精品久久| 国产精品久久久久影院日本| 午夜精品久久17c| 亚洲午夜精品久久久久久久久久久久| 色综合久久中文字幕综合网小说| 高清欧美性猛交xxxx| 亚洲女人被黑人巨大进入| 日韩在线中文字| 日韩精品中文字幕在线| 亚洲欧美精品伊人久久| 永久免费精品影视网站| 久久精品视频免费播放| 黑人极品videos精品欧美裸| 国产精品69精品一区二区三区| 国产精品久久视频| 国产精品流白浆视频| 一区二区三区视频免费| 国产99久久精品一区二区 夜夜躁日日躁| 日韩美女在线观看| 少妇高潮久久77777| 久久国产精品久久国产精品| 欧美日韩亚洲精品一区二区三区| 亚洲精品一区二区网址| 在线色欧美三级视频| 国产日本欧美视频| 91久久中文字幕| 精品国产福利视频| 色哟哟网站入口亚洲精品| 亚洲免费视频一区二区| 久久久精品免费视频| 日韩国产高清污视频在线观看| 久久网福利资源网站| 亚洲人在线视频| 欧美日韩国内自拍| 欧美黑人xxxx| 欧美高清在线播放| 欧美黑人巨大xxx极品| 亚洲电影在线看| 色偷偷亚洲男人天堂| 亚洲欧美国产精品va在线观看| 亚洲免费av片| 久久久久免费精品国产| 国产精品久久久久久超碰| 91久久精品美女| 国产欧亚日韩视频| **欧美日韩vr在线| 精品欧美激情精品一区| 成人在线精品视频| 精品国产91久久久久久| 国产精品久久久久9999| 精品一区二区电影| 97成人精品区在线播放| 精品国产一区二区三区久久久| 国产99久久精品一区二区 夜夜躁日日躁| 久久久久成人网| 超薄丝袜一区二区| 亚洲精品福利在线| 国产v综合v亚洲欧美久久| 亚洲欧美另类在线观看| 久久视频精品在线| 国产精品久久久av| 欧美日韩一二三四五区| 亚洲国产精品va在看黑人| 91系列在线观看| 亚洲欧美在线x视频| 日本午夜在线亚洲.国产| 欧美在线精品免播放器视频| 亚洲国产精彩中文乱码av在线播放| 777午夜精品福利在线观看| 中文字幕免费精品一区高清| 日韩成人激情在线| 国产一区二区三区精品久久久| 色综合久综合久久综合久鬼88| 精品国产成人av| 久久久久久国产精品三级玉女聊斋| 精品女同一区二区三区在线播放| 欧美日韩国产一中文字不卡| 美女扒开尿口让男人操亚洲视频网站| 成人伊人精品色xxxx视频| www国产亚洲精品久久网站| 国产成人高潮免费观看精品| 精品国产视频在线| 亚洲天堂精品在线| 国产精品看片资源| 国产精品99免视看9| 国产精品久久婷婷六月丁香| 热99久久精品| 亚洲欧美在线免费观看| 亚洲美女黄色片| 红桃视频成人在线观看| 97视频com| 国产91精品最新在线播放| 欧美在线国产精品| 成人午夜在线视频一区| 久久免费高清视频| 精品国产精品三级精品av网址| 久久精品99国产精品酒店日本| 久久久在线免费观看| 色av中文字幕一区| 成人午夜在线观看| 国产精品久久一| 日韩精品极品视频免费观看| 国产成人jvid在线播放| 欧美国产乱视频| 69久久夜色精品国产7777| 日本精品免费观看| 91欧美精品午夜性色福利在线| 国产精品网站大全| 亚洲成人激情视频| 亚洲国产精品人久久电影| 久久久久99精品久久久久| 国产91亚洲精品| 日日骚久久av| 亚洲一区二区三区四区视频| 欧美福利在线观看| 自拍偷拍亚洲在线| 精品国产一区二区三区久久狼5月| 欧美日韩视频免费播放| 亚洲欧美日韩精品久久| 亚洲最大中文字幕| 久久色精品视频|