从“this”中删除功能

时间:2015-04-04 20:41:27

标签: javascript

我有一个带有原型函数的函数,它在this上包含一个函数,如下所示:

function parent(){
    this.v = 0;
    console.log(this); // {v: 0}
}
parent.prototype.child = function(name){
    this.v++;
    console.log(this); // {v: 1}

    this.childOfChild = function(name){
        this.v++
        console.log(this); // {v: 2, childOfChild: [Function]}
    }
}

我的问题是,如何在childOfChild: [Function]中显示console.log

我知道这是可能的,但我不记得该怎么做了。

1 个答案:

答案 0 :(得分:4)

您可以将其定义为不可枚举的属性:

parent.prototype.child = function(name) {
    this.v++;
    console.log(this); // {v: 1}

    Object.defineProperty(this, "childOfChild", {
        enumerable: false,
        writable: true,
        configurable: true,
        value: function(name) {
            this.v++;
            console.log(this); // {v: 2, childOfChild: [Function]}
        }
    });
};

false也是默认设置,因此您也可以省略enumerable