Javascript 如何删除此错误类型错误:a.area不是eval的函数?
你好 我正在努力学习ES6。但是我得到了一个错误,这个错误是类型错误:a.area不是eval的函数,为什么?实际上我是这样调用函数的Javascript 如何删除此错误类型错误:a.area不是eval的函数?,javascript,jquery,ecmascript-6,Javascript,Jquery,Ecmascript 6,你好 我正在努力学习ES6。但是我得到了一个错误,这个错误是类型错误:a.area不是eval的函数,为什么?实际上我是这样调用函数的 class Polygon { constructor(height, width) { this.height = height; this.width = width; } get area() { return this.calcArea() } calcArea() { return this.he
class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
get area() {
return this.calcArea()
}
calcArea() {
return this.height * this.width;
}
}
var a =new Polygon(10,20)
alert(a.area())
当我像这样使用a.calcArea()时,它可以工作,但当我像这样使用a.area()时,它会出错吗?为什么? a.area()
如果您有
area() {
但是如果你有
get area() {
您已经声明了一个属性getter,这意味着您将通过直接读取.area
来获取区域
第一个声明具有函数值的类原型属性。
第二个声明了一个类原型属性,该属性具有访问器“getter”函数。试图访问.area
将调用area
函数,结果将是返回值
例如,对于.area()
,要使用您的语法,如下所示:
get area(){
return function(){
return 4;
};
}
然后你可以做a.area()==4
,但是你也可以做
area(){
return 4;
}
a.area()
如果您有
area() {
但是如果你有
get area() {
您已经声明了一个属性getter,这意味着您将通过直接读取.area
来获取区域
第一个声明具有函数值的类原型属性。
第二个声明了一个类原型属性,该属性具有访问器“getter”函数。试图访问.area
将调用area
函数,结果将是返回值
例如,对于.area()
,要使用您的语法,如下所示:
get area(){
return function(){
return 4;
};
}
然后你可以做a.area()==4
,但是你也可以做
area(){
return 4;
}
a.area()
如果您有
area() {
但是如果你有
get area() {
您已经声明了一个属性getter,这意味着您将通过直接读取.area
来获取区域
第一个声明具有函数值的类原型属性。
第二个声明了一个类原型属性,该属性具有访问器“getter”函数。试图访问.area
将调用area
函数,结果将是返回值
例如,对于.area()
,要使用您的语法,如下所示:
get area(){
return function(){
return 4;
};
}
然后你可以做a.area()==4
,但是你也可以做
area(){
return 4;
}
a.area()
如果您有
area() {
但是如果你有
get area() {
您已经声明了一个属性getter,这意味着您将通过直接读取.area
来获取区域
第一个声明具有函数值的类原型属性。
第二个声明了一个类原型属性,该属性具有访问器“getter”函数。试图访问.area
将调用area
函数,结果将是返回值
例如,对于.area()
,要使用您的语法,如下所示:
get area(){
return function(){
return 4;
};
}
然后你可以做a.area()==4
,但是你也可以做
area(){
return 4;
}
因为您将函数定义为
get area(){}
,这实际上是在对象上定义getter的方法
所以你不需要叫它
说这个
alert(a.area)
而不是
alert(a.area())
引用(),因为您将函数定义为
get area(){}
,这实际上是在对象上定义getter的方法
所以你不需要叫它
说这个
alert(a.area)
而不是
alert(a.area())
引用(),因为您将函数定义为
get area(){}
,这实际上是在对象上定义getter的方法
所以你不需要叫它
说这个
alert(a.area)
而不是
alert(a.area())
引用(),因为您将函数定义为
get area(){}
,这实际上是在对象上定义getter的方法
所以你不需要叫它
说这个
alert(a.area)
而不是
alert(a.area())
References()为什么面积是函数?它不是属性?@user944513:函数也可以是属性。属性只是对象的“条目”。属性的值可以是任意的。它可以是数字、字符串、对象甚至函数。但是,
get
创建一种特殊类型的属性,即“访问器属性”,其值由您提供的函数计算。在使用前,了解更多关于get
(参见MDN)的信息。为什么区域是函数?它不是属性?@user944513:函数也可以是属性。属性只是对象的“条目”。属性的值可以是任意的。它可以是数字、字符串、对象甚至函数。但是,get
创建一种特殊类型的属性,即“访问器属性”,其值由您提供的函数计算。在使用前,了解更多关于get
(参见MDN)的信息。为什么区域是函数?它不是属性?@user944513:函数也可以是属性。属性只是对象的“条目”。属性的值可以是任意的。它可以是数字、字符串、对象甚至函数。但是,get
创建一种特殊类型的属性,即“访问器属性”,其值由您提供的函数计算。在使用前,了解更多关于get
(参见MDN)的信息。为什么区域是函数?它不是属性?@user944513:函数也可以是属性。属性只是对象的“条目”。属性的值可以是任意的。它可以是数字、字符串、对象甚至函数。但是,get
创建一种特殊类型的属性,即“访问器属性”,其值由您提供的函数计算。在使用之前,请了解有关获取的更多信息(请参见MDN)。获取区域()是属性吗?或者函数?@user944513一切都是一个属性,只是属性可以存储值,或者自动调用函数来获取值(这就是您试图使用的)。get area()是属性吗?还是功能?@user944513一切