aralejs/aralejs.github.io

关于base里面的destory方法

303182519 opened this issue · 0 comments

https://github.com/aralejs/widget/wiki/Base-&-Widget-%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F

这里的base里生命周期,能删除原型链上的所有对象,感觉好像不行的

结果显示 delete 不能删除 用函数名申明的函数

不能删除继承自原型的成员
function flower(){};
flower.prototype.name="monkey";
var a1=new flower();
a1.name="a1_monkey"
alert(a1.name);//"a1_monkey"
delete a1.name;//ture
alert(a1.name);//"monkey"

   a1是flower的实例,通过实例来删除原型的和父类的成员是不可行的~

   如果一定要删除该属性("这里以name为例"),只能对原型进行操纵
delete a1.constructor.prototype.name;
destroy: function() {
                this.off();

                for (var p in this) {

                    if (this.hasOwnProperty(p)) {
                        delete this[p];
                    }
                }

                // Destroy should be called only once, generate a fake destroy after called
                // https://github.com/aralejs/widget/issues/50
                this.destroy = function() {};
            }