使用object.prototype的Javascript添加方法不起作用

时间:2017-07-21 23:17:33

标签: javascript javascript-objects

整体上是JS的新手,我正在尝试向JS对象添加一个方法。 我有一个对象;

.container {
    width: 70%;
    margin: 10px auto;
    position: relative;
    text-align: center;
    border: 1px solid black;
}

.block {
  background-image: -webkit-linear-gradient(150deg, #D7D7D7, #979797);
  background-image: -o-linear-gradient(150deg, #D7D7D7, #979797);
  background-image: linear-gradient(240deg, #D7D7D7, #979797);
  border-radius: 10px;
  height: 100px;
  width: 100px;
  display:inline-block;
  margin: 10px;
  padding: 10px;
  vertical-align: middle;
  line-height: 1.5;
}

<div class="container">
    <div class="block">Hello</div>
    <div class="block">Everybody</div>
    <div class="block">Would like to center it please</div>
</div>

我想稍后定义generateRandom方法,如下所示

function Population() {
  this.size = 30;
  this.items = [];
  this.generateRandom;
};

但我收到了错误

“generateRandom”不是函数

如果我创建一个新的群体并尝试运行它,我会收到此错误;

Population.prototype.generateRandom = function() {
 ....code here...
}

2 个答案:

答案 0 :(得分:0)

您的代码应该按原样运行 - 尝试运行此代码(冒昧地在函数中添加一些代码):

&#13;
&#13;
function Population() {
  this.size = 30;
  this.items = [];
};

Population.prototype.generateRandom = function() {
  for(let i = 0; i < this.size; i++)
    this.items.push(Math.floor(Math.random() * 100));
  return this.items;
};

let p = new Population();
console.log(p.generateRandom());
&#13;
&#13;
&#13;

答案 1 :(得分:0)

也许是第3行的this.generateRandom;是导致问题的原因。这是不必要的。

此外,由于您要定义对象,因此您可能希望使用class关键字:

class Population {
  constructor() {
    this.size = 30;
    this.items = [];
  }
  generateRandom() {
    // ...your function here
  }
}