我是想通过下面的代码,找出javascript构造函数的prototype默认是哪个对象,可却发现不是不是Object,也不是Object.prototype,那是哪个对象呢?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN " "http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=GB18030 ">
<title> Insert title here </title>
</head>
<body>
<script type= "text/javascript ">
function circle(x,y,r)
{
this.x = x;
this.y = y;
this.r = r;
}
if(circle.prototype == null){
alert( "NULL ");
}else{
//结果输出NOT NULL
alert( "NOT NULL ");
alert(circle.prototype);
alert(typeof circle.prototype);
if(circle.prototype == Object){
alert( "SAME TO OBJECT ");
}else{
//结果输出DIRRERENT
alert( "DIFFERENT TO OBJECT ");
}
if(circle.prototype == Object.prototype){
alert( "SAME TO OBJECT 'S PROTOTYPE ");
}else{
//结果输出DIRRERENT
alert( "DIFFERENT TO OBJECT 'S PROTOTYPE ");
}
}
</script>
</body>
</html>
------解决方案--------------------
- JScript code
<script type= "text/javascript"> function circle(x, y, r) { this.x = x; this.y = y; this.r = r; } if (circle.prototype == null){ alert("NULL"); } else { //结果输出NOT NULL alert("NOT NULL"); //circle是Function的实例,Function的实例是带prototype的 if (circle.prototype == Object) { alert("SAME TO OBJECT"); } else { //结果输出DIRRERENT //prototype貌似继承了Object.prototype,不过继承不代表===吧? //证明继承的方法很简单delete circle.prototype.constructor;后在alert(circle.prototype.constructor)就会指向Object alert("DIFFERENT TO OBJECT"); } if(circle.prototype == Object.prototype){ alert( "SAME TO OBJECT 'S PROTOTYPE "); }else{ //结果输出DIRRERENT //这里不解释了。。。看上面的解释就知道了。。。 alert( "DIFFERENT TO OBJECT 'S PROTOTYPE"); } } </script>