删除后绑定成员调用

时间:2015-06-09 14:22:19

标签: javascript

在此片段中,delete返回true。那么为什么在删除后成功调用f?



function X() {
    this.f = function() {
        console.log("X::f");
    }
}

x = new X;
var f = x.f.bind(x);
console.log("delete: " + delete x);
f();




1 个答案:

答案 0 :(得分:5)

delete刚刚删除了标识符x。该对象仍然存在于内存中,因为它绑定到f

f仍引用具有相同绑定上下文的相同函数,即使x没有。

请参阅the MDN page on delete

  

与普遍看法不同,删除操作符与直接释放内存有关(它只通过断开引用间接进行。有关更多详细信息,请参阅内存管理页面。)