var a=function(){
for(i in this)
delete this[i]//这里delete为什么不管用????
}
a.prototype.a="aaaa"
var aa=new a
alert(aa.a)//依然弹出aaaa

解决方案 »

  1.   

    var a=function(){}
    a.a="aaa"
    a.prototype.a="aaaaaa"
    delete a.a,delete a.prototype.a
    alert(a.a)//undefined
    alert(a.prototype.a)//undefined
    var aa=new a
    alert(aa.a)//undefinedvar a=function(){
    this.a="aaaa"
    }
    a.prototype.b="bbbb"
    var aa=new a
    delete aa.a;delete aa.b
    alert(aa.a)//正常删除 弹出undefined
    alert(aa.b)//不能删除 弹出bbbba.prototype.b 不能被删除  为什么????
      

  2.   

    建议你跟一下,看看
    for(i in this)
    到底遍历到了哪些属性。猜测原型式继承可能是在构造之后进行的。
      

  3.   

    这样不能删除
    var a=function(){
       alert("sss")
    }delete a
    alert(a)//不能删除 弹出a函数这样可以删除
    var a=function(){}
    a.b=function(){
       alert("sss")
    }
    delete a.b//
    alert(a.b)//成功删除 弹出undefined
      

  4.   

    var a=function(){}
    a.b=function(){
    setTimeout(function(){
       alert("sss")
    },50000)
    }
    a.b()
    delete a.b//即使a.b正在执行 delete也将删除a.b
    alert(a.b)
      

  5.   

    delete 从一个集合中,需要倒着来,从i-1 到 0
      

  6.   

    delete
    删除一个对象的属性或者数组中特定位置的元素。 
    实现版本  Navigator 2.0  语法
    delete objectName.property
    delete objectName[index]
    delete property 
    参数
    objectName  对象的名称。  
    属性  已有的属性。  
    index  一个整型数值,表明了要删除的元素在数组处的位置。  描述
    第三种格式只在 with 语句中合法。 
    如果删除成功,delete 操作符将把属性或元素设为 undefined(未定义)。delete 总是返回 undefined。 
      

  7.   

    所直接delete方法是不行的.他不是对象的属性.
      

  8.   


    var a=function(){
        for(i in this)
        delete this[i]//这里delete为什么不管用????
        delete a.prototype.a
    }楼顶的问题.
    你删除的只是新建对象aa里的a属性.
    当aa.a没值得的时候.
    会到prototype中找值.
    要删除原型的才会有用.
      

  9.   

    Javascript的delete与C++不同,它不会删除o.x属性指向的对象,而是删除o.x属性本身。
    在实际的Javascript中,delete o.x之后,Object对象会由于失去了引用而被垃圾回收,所以delete o.x也就“相当于”删除了o.x所指向的对象,但这个动作并不是ECMAScript标准,也就是说,即使某个实现完全不删除Object对象,也不算是违反ECMAScript标准。并不是所有的属性都能被delete。例如,prototype中声明的属性就无法被delete:
    对象的预定义属性也无法删除。 可以认为这类属性带有DontDelete的特性。
    通过var声明的变量和通过function声明的函数拥有DontDelete特性,无法被删除
    但是有一点例外,就是通过 eval 执行的代码中,通过var声明的变量虽然与正常的var声明变量同属于Global对象,但它们不具有DontDelete特性,能被删除。
    delete是普通运算符,会返回true或false。规则为:当被delete的对象的属性存在并且拥有DontDelete时返回false,否则返回true。这里的一个特点就是,对象属性不存在时也返回true,所以返回值并非完全等同于删除成功与否。
      

  10.   

    直接delete方法不行吧?!它可不是对象的属性啊.