Javascript中删除操作符的详细介绍

Javascript中删除操作符的详细介绍
一、变

当涉及Javascript中的删除操作符时,首先要做的就是理解Javascript中变量和属性之间的关系。

在Javascript中,变量和对象属性的关系很微妙,甚至多次将等同,因为Javascript创建脚本执行一个全局对象在浏览器窗口对象,全局变量都是这个全局对象的属性,当函数执行时也会创建一个本地激活对象。所有变量都是这个激活对象的属性,您可以了解Javascript范围和闭包。
复制代码代码如下所示:
在原型语句中不能删除属性

var全局= 1;
this.global; / / 1,通过访问全局对象
this.global2 = 2;
global2 / / 12;
函数(){
var本地= 36;
但不能直接访问激活,
通过foo.local访问局部变量 / /
}

看来,变量相当于对象的属性,但它不是,至少不一样的删除操作。我的理解是,一个变量声明必须通过var声明,而不是由var声明的全局变量的窗口对象的所有属性。这使得它很容易理解的变量和对象之间的关系属性。

二、删除运算

删除操作符用于删除对象属性。对于引用类型的值,它也删除对象属性本身,不删除属性指向的对象。如果您有问题,您可以查看基本类型和引用类型的值,或测试以下代码:
复制代码代码如下所示:
var;
var = x:10 };
形容词a;
删除一个属性。
console.log(o.a); / /未定义
console.log(内); / / 10 { 10 },X:因为对象仍然是被一个,所以它不会恢复

此外,删除OX写的还可以删除O {X},这两者都是相同的。

三。变量没有被删除。

这是由VAR和功能已经由功能宣布宣布dontdelete特征变量,他们不能被删除。全局变量(全局对象的属性),申报不通过VAR
复制代码代码如下所示:
全局变量= {
甲:123,
{ B:
C:1345
}
};
删除全局文件;无效
console.log(全球)

obj = { {
答:123
};
删除obj; / /删除obj对象的全局变量,该窗口的属性对象
console.log(obj); / /目标不明确
四。原型中声明的属性和对象将带来的属性不能被删除。

性能宣布原型和属性的对象(实际上这些特性还原型)可以被认为是dontdelete不能deleted.for实例特征
复制代码代码如下所示:
在原型语句中不能删除属性

函数对象(){
这个,x=1;
}
对象的原型。x = 2;

var o =新的对象();
console.log(OX); / / 1,由OX构造函数定义

Delete o.x;
console.log(OX); / / 2、OX定义原型删除,即使OX再次实施将不会被删除

使用属性对象不能删除

var字符串123456;
console.log(字符串长度); / / 6
删除strings.length;
console.log(字符串长度); / /仍然是6

五、少数例外eval语句下

在执行eval代码,变量声明通过VAR属于正常的变量声明变量的全局对象,但他们没有dontdelete特性可以被删除。但在eval代码所定义的变量的变量有dontdelete不能删除。

复制代码代码如下:eval(var x = 42;);
x 42;
删除;
X referenceerror:X不是; / / = >定义
eval(函数f(){ return 12;} );
(f);12
删除F;
F(referenceerror: / /);= > F没有定义
在代码 / / eval执行声明的变量的VAR是一个全局对象,虽然它像正常的声明变量的VAR。
但他们没有dontdelete / /属性,可以删除。
eval((函数(){ +
var = 42;+
删除x;++
返回x;+
}();
42
通过VAR / EVAL在dontdelete功能码定义的变量不能被删除。
返回值为六并删除

删除是一个普通的操作并返回真或假。假时返回的删除对象的属性存在,有dontdelete,否则返回true。这里的一大特色是对象属性返回真的当它不存在,那么返回值不完全相同是否要删除不成功。
复制代码代码如下所示:
函数C(){
这个,x=42;
}
C.prototype。Y = 12;
新的C();

删除OX; / /真的
OX; / /未定义
x在o; / false
/ / OX和无dontdelete,返回true

删除o.y; / /真的
o.y / / 12;
/ / O没有自己的o.y属性,所以返回真
在这里,在对象本身的存在下也可以看到原型链,并且原型属性是不同的。

删除
全球,有dontdelete / /特征,返回false

删除undefinedproperty; / /真的
/ /全球没有一个属性命名undefinedproperty因此返回true

删除42
没有属性返回True / / 42。一些实现抛出异常(ECMAscript标准的违规)

变量x=24;
删除
x 25;
删除的是x +(24)的返回值,而不是属性,它返回true。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部