对象重复自身

objects repeating themselves

本文关键字:对象      更新时间:2023-09-26

我正在尝试上一课,学习javascript对象等等。。。我在循环中遇到了一个问题,我想对象本身就是

var darkness = { 
  add: function(a,b) {
  for(var title in b) {
      alert(a+ " is the "+ b.title );
      alert(a+ " holds many of"+b.dream);
    }
  }
};

darkness.add('darkness',{
  title :'feelings',
  dream:'dreams'
 });

这会提醒两次吗?测验http://jsbin.com/ogunor/1/edit

有人能帮我更好地学习这些吗

我将尝试解释。您传递的b对象有两个属性:title和dream。您的for(var title in b)循环,将遍历每个对象属性键。。意味着将运行两次-第一次迭代将具有title = 'title'和第二次title='dream'。在每次迭代中,您都会发出两次警报,从而得到4次警报。您可以完全删除循环,只保留警报,以便它只发出两次警报。

var darkness = { 
  add: function(a,b) {
  for(var title in b) { // runs twice cuz you have 2 properties
      alert(title); // try alerting title just to see what it hold in each iteration.
      alert(a+ " is the "+ b.title );
      alert(a+ " holds many of"+b.dream);
    }
  }
};

darkness.add('darkness',{
  title :'feelings', // 1st property
  dream:'dreams' // 2nd property
 });

您的代码会发出两次警告,因为您正在循环遍历b对象中的每个属性(titledream)。

这就足够了:

var darkness = { 
    add: function(a,b) {
        alert(a+ " is the "+ b.title );
        alert(a+ " holds man of " +b.dream);
    }  
};
darkness.add('darkness',{
  title :'feelings',
  dream:'dreams'
});