次のようなコードがあります。
function Cell(center) {
this.center_cell = center;
calc_neighbours = function() {
var points = this.center_cell;
console.log(points); // displays undefined
};
this.get_neighbours = function() {
return calc_neighbours();
};
}
var c_points = new Array(8,2);
var cell = new Cell(c_points);
cell.get_neighbours();
上記のコードを配置すると、関数cell.get_neighbours()
は undefined と表示されます。
ここで、わずかな変更を加えて、次のコードをリストすると、関数は値を表示します。これは、javascript の object プロパティ内の関数スコープまたは変数スコープが原因です。
値を表示するコードは次のとおりです。
function Cell(center) {
this.center_cell = center;
this.calc_neighbours = function() {
var points = this.center_cell;
console.log(points); // displays undefined
};
this.get_neighbours = function() {
return this.calc_neighbours();
};
}
関数の使用法に変更を加えていません。すなわち
var c_points = new Array(8,2);
var cell = new Cell(c_points);
cell.get_neighbours();