以下函数的实例化会导致在其成员函数中评估return _rows * _columns
吗?
所以当我打电话给myTable.getCellCount()
时,它不重复评估,只是返回值?这可能很重要,如果不是_rows
是一个整数,它实际上是一个昂贵的操作。
function Table (rows, columns) {
// save parameter values to local variables
var _rows = rows;
var _columns = columns;
// return the number of table cells
this.getCellCount = function() {
return _rows * _columns;
};
}
var myTable = new Table(10,2);
答案 0 :(得分:1)
没有。它将导致执行:
this.getCellCount = function() {
return _rows * _columns;
};
在你调用它之前不会执行函数,例如执行myTable.getCellCount()
。
答案 1 :(得分:1)
您可以通过以下方式对此进行测试:
console.log('called');
...在你的功能中。
您将看到代码示例中未调用它。
如果您希望急切地计算产品并缓存值,则必须在构造函数中本地执行此操作。
答案 2 :(得分:1)
实例化Table
会分配getCellCount
方法,但不会运行它。
如果它包含昂贵的操作,您可以缓存结果:
function Table (rows, columns) {
// save parameter values to local variables
var _rows = rows,
_columns = columns,
_cellCount = _rows * _columns;
// return the number of table cells
this.getCellCount = function() {
return _cellCount;
};
}