JavaScriptのdeleteの使い方

1510 ワード

もっと読む
1、
var o={}
o.x=new Object();
delete o.x;//前の行のnewのObjectオブジェクトは依然として存在していますが、o.xという属性を削除しただけですので、deleteを立体関数に類似しないでください.
 
2、
var global=42
delete global;//Global.globalを削除します
 
3、
すべての属性がdeleteされるわけではない.例えば、prototypeで宣言されている属性はdeleteされません.
function C() { this.x = 42; }
C.prototype.x = 12;

var o = new C();
o.x;     // 42,         o.x

delete o.x;
o.x;     // 12,  prototype    o.x,      delete o.x      
オブジェクトの事前定義属性も削除できません.
var re = /abc/i;
delete re.ignoreCase;
re.ignoreCase; // true, ignoreCase    
 
 
4、
varによって宣言された変数とfunctionによって宣言された関数は削除されません.
var x = 36;
delete x;
x;     // 36, x     

y = 12;
delete y;
y;     // undefined

function foo() { return 42; }
delete foo;
foo();  // 42
ただし、例外としては、evalで実行されるコードの中で、varで宣言された変数は正常なvar宣言変数と同じGlobalオブジェクトに属していますが、それらは削除されます.
eval("var x = 36;");
x;     // 42
delete x;
Technoratiタグ:delete
x;     // undefined
しかし、これは例外です.エヴァのコードの関数内でvarによって定義された変数は削除できません.
eval("(function() { var x = 42; delete x; return x; })();");
//    42
 
 
* delete      ,   true false。   :  delete                 false,    true。
         ,           true,                  。