Javascript:构造函数函数这个关键字

时间:2016-10-31 23:48:06

标签: javascript function-constructor

以下两个代码段之间有什么区别:

function HelloService(){
  var service = this;
  service.itemList = []

  service.hello = function(){    
    return "Hello World!!";
  };

  service.addItem = function(){
    service.itemList.push(1);
  }
}
function HelloService(){
  var service = this;
  var itemList = [];

  var hello = function(){    
    return "Hello World!!";
  };

  service.addItem = function(){
    itemList.push(1);
  }

}

因为据我所知,hello函数内部的this和hello函数外部指向同一个实例。

有人可以向JAVA解释上述问题吗?

编辑:我添加了addItem功能。在这里,我不理解service.itemListvar itemListaddItem function之间的区别。你能解释一下这个功能的区别吗?

1 个答案:

答案 0 :(得分:2)

Javascript函数中的局部变量不会作为this的属性添加。第一个相当于:

function HelloService(){
  this.hello = function(){    
    return "Hello World!!";
  };
}

但不是:

function HelloService(){
  var hello = function(){    
    return "Hello World!!";
  };
}

由于hello引用的函数从未使用过,并且在HelloService范围之外无法访问,因此无效。