国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript中的delete介紹

2024-05-06 14:21:16
字體:
來源:轉載
供稿:網友
一、問題的提出

  我們先來看看下面幾段代碼,要注意的是,以下代碼不要在瀏覽器的開發者工具(如FireBug、Chrome Developer tool)中運行,原因后面會說明:

  為什么我們可以刪除對象的屬性:
代碼如下:
var o = { x: 1 };
delete o.x; // true
o.x; // undefined  

但不以刪除像這樣聲明的變量:
代碼如下:
var x = 1;
delete x; // false
x; // 1

也不能刪除像這樣定義的函數:
代碼如下:
function x(){}
delete x; // false
typeof x; // "function"

注意:當delete操作符返回true時表示可以刪除,返回false表示不能刪除

  要理解這一點,我們首先需要掌握像變量實例化和屬性特性這樣的概念--遺憾的是這些內容在一些javascript的書中很少講到。理解它們并不難,如果你不在乎它們為什么這么運行,你可以隨意的跳過這一部分。

二、代碼類型

  在ECMAScript中有三種類型的可執行代碼:Global code(全局代碼)、Function code(函數代碼)和 Eval code(放在Eval中執行的代碼)。
代碼如下:
var x=1;//Global code
function test(){
var y=2;//Function Code
eval("var z=3");//Eval Code in Function
}
eval("function evalTest(){}");//Eval Code in Global


三、執行上下文

  當ECMAScript 代碼執行時,它總是在一定的上下文中運行,執行上下文是一個有點抽象的實體,它有助于我們理解作用域和變量實例化如何工作的。對于三種類型的可執行代碼,每個都有執行的上下文。當一個函數執行時,可以說控制進入到函數代碼(Function code)的執行上下文。全局代碼執行時,進入到全局代碼(Global code)的執行上下文。

  正如你所見,執行上下文邏輯上來自一個棧。首先可能是有自己作用域的全局代碼,代碼中可能調用一個函數,它有自己的作用域,函數可以調用另外一個函數,等等。即使函數遞歸地調用它自身,每一次調用都進入一個新的執行上下文。

四、Activation object(激活對象)/Variable object(變量對象)

  每一個執行上下文在其內部都有一個Variable Object。與執行上下文類似,Variable object是一個抽象的實體,用來描述變量實例化的機制。有趣的是在代碼中聲明的變量和函數實際上被當作這個變量對象的屬性被添加。

  當進入全局代碼的執行上下文時,一個全局對象用作變量對象。這也正是為什么在全局范圍中聲明的變量或者函數變成了全局對象的屬性。
代碼如下:
/* remember that `this` refers to global object when in global scope */
var GLOBAL_OBJECT = this;

var foo = 1;
GLOBAL_OBJECT.foo; // 1
foo === GLOBAL_OBJECT.foo; // true

function bar(){}
typeof GLOBAL_OBJECT.bar; // "function"
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 深圳市| 朝阳县| 班戈县| 纳雍县| 西安市| 勃利县| 东至县| 锦州市| 同江市| 宁乡县| 集贤县| 中方县| 绥德县| 开鲁县| 伊春市| 全南县| 内丘县| 扬中市| 广东省| 泰来县| 磐安县| 河西区| 佛山市| 屏南县| 乐安县| 抚州市| 博野县| 永胜县| 泰来县| 常宁市| 嵩明县| 宁乡县| 马鞍山市| 鄂托克前旗| 惠来县| 易门县| 莲花县| 陇西县| 东莞市| 拉孜县| 罗江县|