gpt4 book ai didi

javascript - Eloquent Javascript Ch.6 "Another Cell"构造函数中的部分奇怪行为

转载 作者:行者123 更新时间:2023-12-03 08:53:03 25 4
gpt4 key购买 nike

我正在做 Eloquent Javascript 第 6 章练习“另一个单元格”,发现了一些奇怪的东西。请看下面我写的构造函数的代码。 StretchCell 继承自 UnderlinedCell,如下所示。

带下划线的单元格

function UnderlinedCell(inner) {
this.inner = inner;
};
UnderlinedCell.prototype.minWidth = function() {
return this.inner.minWidth();
};
UnderlinedCell.prototype.minHeight = function() {
return this.inner.minHeight() + 1;
};
UnderlinedCell.prototype.draw = function(width, height) {
return this.inner.draw(width, height - 1)
.concat([repeat("-", width)]);
};

StretchCell 构造函数版本 1

function StretchCell(inner, minWidth, minHeight){
this.inner = inner;
if (minWidth > inner.minWidth)
this.inner.minWidth = minWidth;
if (minHeight > inner.minHeight)
this.inner.minHeight = minHeight;
};

StretchCell 构造函数版本 2

function StretchCell(inner, minWidth, minHeight){
this.inner = inner;
this.inner.minWidth = Math.max(inner.minWidth, minWidth);
this.inner.minHeight = Math.max(inner.minWidth, minHeight);
};

这两个版本的代码对我来说似乎都不错,因为它们都直接修改变量,并且都为其赋值,但是当我在 eloquentjavascript 网站上提供的沙箱中运行时,我从版本 2 中收到错误。这很奇怪。我在这里缺少什么吗?

编辑:我收到错误-

TypeError: this.inner.minWidth is not a function (line 97 in function UnderlinedCell.minWidth) 
called from line 12

最佳答案

 this.inner.minWidth = Math.max(inner.minWidth, minWidth);
this.inner.minHeight = Math.max(inner.minWidth, minHeight);

在这段代码之后,this.inner.minWidththis.inner.minHeight都成为从Math.max()返回的值。在这种情况下, this.inner.minWidththis.inner.minHeight 预计是函数,因此无法运行!

关于javascript - Eloquent Javascript Ch.6 "Another Cell"构造函数中的部分奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com