简单的面向对象JavaScript示例

简单的面向对象JavaScript示例,javascript,Javascript,我又在学习OOJavaScript了。我写了这个简单的对象 function circle(){ this.radius = 4; } circle.prototype.area = function(){ this.radius * this.radius * 3.14; }; var c = new circle(); c.area(); c.area返回的值未定义。我想这只能是因为this.radius没有返回4,为什么不返回?radius的值为4,但area方法没有返回任何

我又在学习OOJavaScript了。我写了这个简单的对象

function circle(){
  this.radius = 4;
}

circle.prototype.area = function(){
  this.radius * this.radius * 3.14;
};

var c = new circle();
c.area();
c.area返回的值未定义。我想这只能是因为this.radius没有返回4,为什么不返回?

radius的值为4,但area方法没有返回任何值

circle.prototype.area = function(){
  return this.radius * this.radius * 3.14;
};
半径的值为4,但面积方法不返回任何值

circle.prototype.area = function(){
  return this.radius * this.radius * 3.14;
};

使用Math.PI而不是3.14。按照惯例,构造函数以大写字母开头。默认情况下,它们返回新构造的对象,因此您不需要return语句。但是,如果希望方法返回值,则必须使用return语句。请使用Math.PI而不是3.14。按照惯例,构造函数以大写字母开头。默认情况下,它们返回新构造的对象,因此您不需要return语句。但是如果你想让方法返回一个值,它们必须有一个return语句数字'this.area=Math.powthis.radius,2*Math.PI;返回此.area@罗布:我不会的。事实上,您可以使用area成员=>area重写area方法。area在开始时是可调用的,但在第一次调用后不会调用。@duri谢谢,我在返回语句不可用的地方使用Groovy太久了optional@duri-哦,当然!不管怎样,这只是我怀疑的一个操作练习。我要加上:if typeof this.area!='数字'this.area=Math.powthis.radius,2*Math.PI;返回此.area@罗布:我不会的。事实上,您可以使用area成员=>area重写area方法。area在开始时是可调用的,但在第一次调用后不会调用。@duri谢谢,我在返回语句不可用的地方使用Groovy太久了optional@duri-哦,当然!不管怎么说,这只是我怀疑的行动的一个练习。