浏览 6154 次
锁定老帖子 主题:js中delete机制的一些理解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-03-20
var a=10; delete a; alert(a); 结果是unified function User(){ this.name="demo"; } var user = new User(); user.name="ddd"; delete user.name; alert(a); 结果是unified 但是 function User(){ var name = "ddd"; delete name; alert(name); } 就是错误的; 现在有些误解,如果我直接赋值null和delete有什么区别呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-03-21
设置为undefined或者null仅仅是移除了属性和值的关联,不是真正的删除属性。
|
|
返回顶楼 | |
发表时间:2013-03-23
最后修改:2013-03-23
沙舟狼客 写道 delete关键字用于回收对象;主要删除全局变量和字段
但是 function User(){ var name = "ddd"; delete name; alert(name); } 就是错误的; 现在有些误解,如果我直接赋值null和delete有什么区别呢? 函数体类的自动变量是在栈里面分配的,函数执行完自动回收,无需显式delete |
|
返回顶楼 | |
发表时间:2013-03-25
最后修改:2013-03-25
var x = {a:1, b:2} for(var m in x){ alert(m) } //a,b i.a=null; for(var m in x){ alert(m) } //a,b delete i.a for(var m in x){ alert(m) } // b |
|
返回顶楼 | |
发表时间:2013-03-25
最后修改:2013-03-25
function User(){ var name = "ddd"; delete name; alert(name); } 这个name 依旧是 ddd 的原因是,delete 不能删除这类属性。 http://www.cnblogs.com/jfp888/archive/2011/06/09/2076127.html 以下是可以的 function User(){ this.name = "ddd"; delete name; } function caller(){ var i = new User(); alert(i.name); } |
|
返回顶楼 | |