2

次のようなコードがあります。

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();
4

3 に答える 3

5

this.get_neighbours = function(){
    return calc_neighbours();
};  

calc_neighboursコンテキストを提供せずに呼び出します。これにより、コンテキストが であるグローバル コンテキスト ( window) になりpointsますundefined

そのため、次のように呼び出す必要があります

this.calc_neighbours();
于 2013-07-29T06:22:12.830 に答える