我当时在修改数组原型,但是我对此感到困惑。如果您能帮助我,那就太好了。

好吧,假设我要向Array.prototype添加函数“ Parent”

Array.prototype.Parent = function() {
    console.log(this);
}


接下来,我要向父函数添加子函数。我会这样做:

Array.prototype.Parent.Child = function() {
    console.log(this);
}


现在,我希望在Parent和Child中都引用数组本身。所以:

[1,2,3].Parent(); // Would output [1,2,3];
[1,2,3].Parent.Child(); // Want it to print [1,2,3];


基本上,我希望子级的此变量引用数组而不是父函数。有见识吗?

最佳答案

您可以使Parent成为一个获取器,为每个数组返回唯一的函数,并提供上下文:

Object.defineProperty(Array.prototype, 'parent', {
    configurable: true,
    get: function () {
        var that = this;

        function parent() {
            console.log(that);
        }

        parent.child = function () {
            console.log(that);
        };

        return parent;
    },
});

关于javascript - 修改“this”变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45262044/

10-16 09:33