我写了以下代码片段:
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.getAllKeyValuePair
是undefined
,因为我没有明确设置String
原型。请解释为什么当wy定义一个Object原型时它会自动定义一个String原型?
答案 0 :(得分:4)
String.prototype对象从Object.prototype对象“继承”。
在Firefox,Chrome或Safari中,试试这个:
alert(String.prototype.__proto__ === Object.prototype)
应提醒true
。
答案 1 :(得分:1)
这是因为几乎javascript中的每个类型都继承自对象,并且当您通过原型扩展对象类型时,从它继承的每个对象也可以访问您定义的函数。