Javascript 即使我注释Dog.prototype.constructor=Dog行,程序仍然可以正常运行,为什么?

Javascript 即使我注释Dog.prototype.constructor=Dog行,程序仍然可以正常运行,为什么?,javascript,Javascript,下面的代码来自《JavaScript示例第二版》,运行良好。 在我对Dog.prototype.constructor=Dog和Cat.prototype.constructor=Cat行进行注释之后,我无法完全理解构造函数的用法 我发现它也很有效,我得到了同样的结果,为什么?谢谢 <html> <head><title>Creating a subclass</title> <script type="text/javascript">

下面的代码来自《JavaScript示例第二版》,运行良好。 在我对Dog.prototype.constructor=Dog和Cat.prototype.constructor=Cat行进行注释之后,我无法完全理解构造函数的用法 我发现它也很有效,我得到了同样的结果,为什么?谢谢

<html>
<head><title>Creating a subclass</title>
<script type="text/javascript">
 function Pet(){ // Base Class
 var owner = "Mrs. Jones";
var gender = undefined;
 this.setOwner = function(who) { owner=who;};
this.getOwner = function(){ return owner; }
 this.setGender = function(sex) { gender=sex; }
this.getGender = function(){ return gender; }
}
 function Cat(){} //subclass constructor
 Cat.prototype = new Pet();
Cat.prototype.constructor=Cat;
 Cat.prototype.speak=function speak(){
return("Meow");
};
 function Dog(){};//subclass constructor
 Dog.prototype= new Pet();
Dog.prototype.constructor=Dog;
Dog.prototype.speak = function speak(){
return("Woof");
};
</script>
</head>
<body><big>
<script>
var cat = new Cat;
var dog = new Dog;
cat.setOwner("John Doe");
cat.setGender("Female");
 dog.setGender("Male");
 document.write("The cat is a "+ cat.getGender()+ " owned by "
+ cat.getOwner() +" and it says " + cat.speak());
document.write("<br>The dog is a "+ dog.getGender() +""+
" owned by " + dog.getOwner() + " and it says "
+ dog.speak());
</script>
</big>
</body>
</html>

创建子类
函数Pet(){//基类
var owner=“琼斯夫人”;
var性别=未定义;
this.setOwner=函数(who){owner=who;};
this.getOwner=函数(){return owner;}
this.setGender=function(sex){gender=sex;}
this.getGender=function(){return-gender;}
}
函数Cat(){}//子类构造函数
Cat.prototype=新Pet();
Cat.prototype.constructor=Cat;
Cat.prototype.speak=函数speak(){
返回(“喵喵”);
};
函数Dog(){}//子类构造函数
Dog.prototype=新宠物();
Dog.prototype.constructor=Dog;
Dog.prototype.speak=函数speak(){
返回(“纬”);
};
var cat=新cat;
var狗=新狗;
猫主人(“约翰·多伊”);
猫的性别(“雌性”);
狗狗性别(“雄性”);
document.write(“猫是”+cat.getGender()+“拥有者”
+cat.getOwner()+,它说“+cat.speak());
document.write(“
狗是一只”+狗。getGender()+ “由“+dog.getOwner()+”所有,并显示” +狗。说();
这样子类就可以被识别为子类。它不会影响构造函数或对象本身的功能,但会影响某种类型的类型检查。这里有一个例子

留在:

var d = new Dog();
d.constructor // Dog, all is good
遗漏:

var d = new Dog();
d.constructor // Pet? This dog isn't a dog?

因为计算机已经发展到你不再完全控制它们的地步,它们正计划在未来的小猫的帮助下征服世界