Object的原型是String的原型

时间:2013-12-16 21:53:00

标签: javascript

我写了以下代码片段:

Object.prototype.getAllKeyValuePair=function(){
    var str="";
    for(var p in this){
        str=str+"{"+p+", "+this[p]+"}";
    }
    return str;
}
alert(Object.getOwnPropertyDescriptor(String.prototype.getAllKeyValuePair));

我除了String.prototype.getAllKeyValuePairundefined,因为我没有明确设置String原型。请解释为什么当wy定义一个Object原型时它会自动定义一个String原型?

2 个答案:

答案 0 :(得分:4)

String.prototype对象从Object.prototype对象“继承”。

在Firefox,Chrome或Safari中,试试这个:

alert(String.prototype.__proto__ === Object.prototype)

应提醒true

在MDN上查看Inheritance and the prototype chain

答案 1 :(得分:1)

这是因为几乎javascript中的每个类型都继承自对象,并且当您通过原型扩展对象类型时,从它继承的每个对象也可以访问您定义的函数。