我的三角形区域构造函数有什么问题

What is wrong with my Triangle area constructor?

本文关键字:什么 问题 构造函数 三角形 区域 我的      更新时间:2023-09-26
function triangle(sideOne, sideTwo, sideThree)
{
    this.sideOne = sideOne;
    this.sideTwo = sideTwo;
    this.sideThree = sideThree;
    var result = 
    {
        return (this.sideOne + this.sideTwo + this.sideThree)/2;
    };
    this.heronFormula = function()
        {
            return Math.sqrt(result*(result-this.sideOne)*(result-this.sideTwo)*
            (result-this.sideThree));         
        };
}
var newTriangle = new triangle(5,6,7);
console.log(newTriangle.heronFormula());

我试图使用苍鹭公式找到三角形的面积,但我收到错误:"意外标记这个"。有谁知道那可能是什么?

var result = 
    {
        return (this.sideOne + this.sideTwo + this.sideThree)/2;
    };

应该是

var result = (this.sideOne + this.sideTwo + this.sideThree) / 2;

问题是您已经在对象表示法中定义了result变量。

只需直接将值分配给结果即可。当在三角形对象上调用heronFormula时,result已经在形成heronFormula函数闭包的作用域中。

小提琴

function Triangle(sideOne, sideTwo, sideThree)
{
    this.sideOne = sideOne;
    this.sideTwo = sideTwo;
    this.sideThree = sideThree;
    this.result = (this.sideOne + this.sideTwo + this.sideThree)/2;
}
Triangle.prototype.heronFormula = function() {
   return Math.sqrt(this.result*(this.result-this.sideOne)*(this.result-this.sideTwo)*(this.result-this.sideThree));         
};

var newTriangle = new Triangle(5,6,7);
console.log(newTriangle.heronFormula());

试试这个:

https://jsfiddle.net/dznatab1/

function triangle(sideOne, sideTwo, sideThree)
{
   this.sideOne  = sideOne;
   this.sideTwo  = sideTwo;
   this.sideThree = sideThree;
   var result = (this.sideOne + this.sideTwo + this.sideThree)/2;  
   triangle.prototype.heronFormula  = function(){
     return Math.sqrt(result*(result-sideOne)*(result-sideTwo)*(result-sideThree)); 
   }; 
}
var newTriangle = new triangle(5,6,7);
console.log(newTriangle.heronFormula());
var result = 
{
    return (this.sideOne + this.sideTwo + this.sideThree)/2;
};

应该是

var result = function() { ... };