3

JS 中的每个函数构造函数都有一个prototype.constructor属性。它存储了函数的定义:

function Rabbit(value) {
    this.jumps: value;
}
alert(Rabbit.prototype.constructor);  // alerts exactly the definition of the Rabbit function

this现在我检查一个简单的函数,而不是函数构造函数,它在体内没有任何内容:

function bar(val) {
    alert(val);
}
alert(bar.prototype.constructor);   // behavior is absolutely the same: it alerts the definition of bar

现在我检查内置Array()函数:

alert(Array.prototype.constructor);  // in Chrome it alerts "function Array() { [native code] }"

现在我想检查一个内置对象的一些内置函数:

// The error is thrown in console: TypeError: Cannot read property 'constructor' of undefined 

alert(Array.prototype.sort.prototype.constructor);

sort没有prototype。它在哪里?它的构造函数在哪里?

4

1 回答 1

1

如果您自己添加该方法,它会返回您所期望的:

    Array.prototype.remove= function(){
        var what, a= arguments, L= a.length, ax;
        while(L && this.length){
            what= a[--L];
            while((ax= this.indexOf(what))!= -1) this.splice(ax, 1);
        }
        return this;
    }


alert(Array.prototype.remove.prototype.constructor);

不可枚举的方法不会暴露它们的代码

于 2012-09-19T18:28:45.630 回答