Javascript对象构造函数函数参数

Javascript对象构造函数函数参数,javascript,Javascript,我可以在构造函数函数中有一个变量而不在函数参数中吗 如下所示: function Person(name,height,weight){ this.name=name; this.height=height; this.weight=weight; this.bmi=null; this.calculateBMI = function() { if (this.bmi===null){ this.bmi = this.weight / (Math.pow(this.hei

我可以在构造函数函数中有一个变量而不在函数参数中吗

如下所示:

function Person(name,height,weight){
this.name=name;
this.height=height;
this.weight=weight;
this.bmi=null;
this.calculateBMI = function()
{
    if (this.bmi===null){
        this.bmi = this.weight / (Math.pow(this.height,2));
    }
    return this.bmi;
}
}
var person1 = new Person("alayna",23, 56)

我可以要一个功能人员(姓名、身高、体重),里面有这个.bmi吗?函数如何知道这里的bmi是什么?

您可以选择是否使用参数值

职能人员(姓名、身高、体重){
this.name=名称;
高度=高度;
重量=重量;
this.bmi=this.weight/(Math.pow(this.height,2));
}
Person.prototype.calculateBMI=函数(){
this.bmi=this.weight/(Math.pow(this.height,2));
返回此.bmi;
}
var person1=新人(“alayna”,23,56);
尽管如此,您可能想看看getter和setter:

这将允许您在每次更新
height
weight
时更新
bmi
。例如,如果
身高
体重
发生变化,以下内容将更新
体重指数

班级人员{
建造师(姓名、身高、体重){
this.name=名称;
这个。_高度=高度;
这个。_重量=重量;
this.bmi=this._体重/(数学功率(this._身高,2));
}
获得重量(){
把这个还给我;
}
设定重量(值){
这个。_权重=值;
this.bmi=值/(数学功率(this._高度,2));
}
获取高度(){
返回此项。\u高度;
}
设置高度(值){
此值为._高度=值;
this.bmi=this._权重/(数学功率(值,2));
}
}
const person1=新人('alayna',23,56);
console.log(person1.bmi);
人1.身高=25;
console.log(person1.bmi);

是的,您也可以使用其他函数作用域变量,即使用
var
let
const
等定义。没有任何东西限制构造函数中变量的使用/定义构造函数没有什么特别之处,只是在使用
new
时会自动调用它们。构造函数可以对对象执行任何其他方法可以执行的操作;this.calculateBMI=function(){if(bmi==null)..我的问题正好相反。如果我在函数参数中没有'bmi',比如Person(姓名、身高、体重),我可以在函数中包含this.bmi吗?是的,我已经更新了答案,从参数中删除了
bmi