该函数旨在对以下类型的对象进行计数:cow和hadCalf:null,并将值存储到numToBreed,在控制台中我总是得到零。为什么?

var forestCows = [
  {name: "Marcus", type: "calf", hadCalf: null},
  {name: "Isaiah", type: "bull", hadCalf: null},
  {name: "Lemuel", type: "cow", hadCalf: null},
  {name: "Daniel", type: "cow", hadCalf: null},
  {name: "Joseph", type: "cow", hadCalf: "Legolas"}
];
Object.prototype.noCalvesYet=function(){
  if(this.type=="cow" && this.hadCalf==null){
  return true;}
  else{return false;}
};
Array.prototype.countForBreeding=function(){
var numToBreed=0;
for(var i=0;i<this.length;i++){
  this[i].noCalvesYet();
  if(this[i].noCalvesYet===true){
    numToBreed++;
    }
}
return numToBreed;
};

var store=forestCows.countForBreeding();
console.log(store);


我也尝试创建一个新函数以更好地了解条件“ if”中的布尔值

var executeThis=function(){return true;};
executeThis();

if(executeThis===true){console.log(3+5);}


在这种情况下,控制台中什么也没有显示,为什么?

`

`

最佳答案

尝试这个:

...
for(var i=0;i<this.length;i++){
  if(this[i].noCalvesYet()===true){
    numToBreed++;
    }
}
...


错误,此方法未调用noCalvesYet:

if(this[i].noCalvesYet===true)

关于javascript - Javascript bool 值和原型(prototype),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43558353/

10-11 01:19