界面在JavaScript中是如何工作的?
这些代码来自 我的问题是关于“接口如何工作?”例如,为什么在第一部分中我们使用cell.minHeight(),而不仅仅是cell?为什么需要.minHeight()以及它以后是如何工作的?作者没有解释接口是如何工作的:(界面在JavaScript中是如何工作的?,javascript,interface,Javascript,Interface,这些代码来自 我的问题是关于“接口如何工作?”例如,为什么在第一部分中我们使用cell.minHeight(),而不仅仅是cell?为什么需要.minHeight()以及它以后是如何工作的?作者没有解释接口是如何工作的:( 函数行高(行){ 返回rows.map(函数(行){ 返回行.reduce(函数(最大值,单元格){ 返回Math.max(max,cell.minHeight()); }, 0); }); } 函数列宽(行){ 返回行[0]。映射(函数(\ui,i){ 返回行。减少(函数
函数行高(行){
返回rows.map(函数(行){
返回行.reduce(函数(最大值,单元格){
返回Math.max(max,cell.minHeight());
}, 0);
});
}
函数列宽(行){
返回行[0]。映射(函数(\ui,i){
返回行。减少(函数(最大,行){
返回Math.max(max,行[i].minWidth());
}, 0);
});
}
接口是如何工作的
a是一个约定。这个约定说明了一类对象的外观,包括它应该有什么方法,这些方法应该有什么签名,以及它们应该做什么
JavaScript没有作为语言元素的接口(如Java),它们是纯约定的。在您的例子中,单元格对象的约定仅在文本中定义:
这是接口:
minHeight()
返回一个数字,指示此单元格的最小宽度(以字符为单位)minWidth()
返回一个长度-高度数组,该数组包含一系列字符串,每个字符串的宽度为个字符。此 表示单元格的内容draw(width,height)
drawTable
函数希望获得这样的单元格对象数组。那么让我们来玩一个游戏:单元格还是无单元格
{}
空对象,无方法:无单元格
无draw
方法:无单元格
从TextCell.prototye
继承方法,这些方法按预期执行:cell
draw
方法不接受width
和height
参数,并且始终返回空数组:无单元格
从RTextCell.prototye
和TextCell.prototye
继承方法,这些方法按预期执行:cell
具有所需的方法,并且这些方法的行为符合预期:cell
关于这些代码,你不了解什么?你了解其中的哪些部分?奇怪的是,这些都在你的链接中解释过了provided@Bergi对不起,我想澄清一下。我的问题是关于“接口如何工作?”例如,为什么在第一部分中我们使用cell.minHeight(),而不仅仅是cell?为什么我们需要.minHeight())后来它是如何工作的?作者没有解释接口是如何工作的:(@Bergi我理解所有代码,除了我们为什么需要.minHeight(),.minWidth(),.draw(),以及接口在代码的不同部分是如何连接的?“接口是如何工作的?”javascript没有接口。也许这就是你产生误解的原因。在你的例子中,它只是一个有方法的对象。
{ minHeight: function() { return 3; },
minWidth: function() { return 3; } }
new TextCell("Hi")
{ minHeight: function() { return 3; },
minWidth: function() { return 3; },
draw: function() { return []; } }
new RTextCell("Hi")
{ minHeight: function() { return 3; },
minWidth: function() { return 3; },
draw: function(w, h) {
var t = new Array(w-1).join("-");
return return [","+t+"."].concat(new TextCell("").draw(w-2, h-2).map(function(l) {
return "|"+l+"|";
}), ["`"+t+"´"]);
} }