没有合适的资源?快使用搜索试试~ 我知道了~
javascript 中的 delete及delete运算符
1 下载量 6 浏览量
2020-10-23
07:46:21
上传
评论
收藏 68KB PDF 举报
温馨提示
试读
3页
主要介绍了javascript 中的 delete及delete运算符的相关资料,需要的朋友可以参考下
资源推荐
资源详情
资源评论
javascript 中的中的 delete及及delete运算符运算符
主要介绍了javascript 中的 delete及delete运算符的相关资料,需要的朋友可以参考下
那么,为什么我们能删除一个对象的属性:
var x = { a: 1 };
delete x.a; // true
x.a; // undefined
但却不能删除一个变量:
var x = 1;
delete x; // false;
x; // 1
也不能删除一个函数:
function x() {};
delete x; // false;
typeof x; // "function"
注意:delete 只有当一个属性无法被删除时才返回 false。
每一个属性拥有零至多个如内部属性——*ReadOnly,DontEnum,DontDelete和Internal**。 你可以把它们想象为标签——
一个属性可能拥有也可能没有某个特殊的内部属性。 在今天的讨论中,我们所感兴趣的是 DontDelete。
当声明变量和函数时,它们成为了变量对象(Variable object)——要么是活化对象(在函数代码中), 要么是全局对象(在
全局代码中)——的属性,这些属性伴随生成了内部属性 DontDelete。 然而,任何显式/隐式赋值的属性不生成 DontDelete。
而这就是本质上为什么我们能删除一些属性而不能删除其他的原因。
var GLOBAL_OBJECT = this;
/* 'foo'是全局对象的一个属性,它通过变量声明而生成,因此拥有内部属性DontDelete
这就是为什么它不能被删除*/
var foo = 1;
delete foo; // false
typeof foo; // "number"
/* 'bar
'是全局对象的一个属性,它通过变量声明而生成,因此拥有DontDelete子
这就是为什么它同样不能被删除*/
function bar() {};
delete bar; // false
typeof bar; // "function"
/* 'baz'也是全局对象的一个属性,
然而,它通过属性赋值而生成,因此没有DontDelete
这就是为什么它可以被删除*/
GLOBAL_OBJECT.baz = "baz";
delete GLOBAL_OBJECT.baz; // true
typeof GLOBAL_OBJECT.baz; // "undefined"
1.5、内建和、内建和DontDelete | Build-ins and DontDelete
所以这就是所有这一切发生的原因:属性的一个特殊的内部属性控制着该属性是否可以被删除。 注意:内建对象的一些属性
拥有内部属性 DontDelete,因此不能被删除; 特殊的 arguments 变量(如我们所知的,活化对象的属性)拥有 DontDelete;
任何函数实例的 length (返回形参长度)属性也拥有 DontDelete:
(function() {
//不能删除'arguments',因为有DontDelete
delete arguments; // false;
typeof arguments; // "object"
//也不能删除函数的length,因为有DontDelete
function f() {};
资源评论
weixin_38602189
- 粉丝: 8
- 资源: 961
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功