簡體   English   中英

Javascript函數

[英]Javascript Functions

我是Java語言的新手,在某個地方找到了此代碼

  var myObject = {
            value: 0,
            increment: function (inc) {
                this.value += typeof inc === 'number' ? inc : 1;
            }
   };

在上述對象中, 增量函數使用this來訪問value變量。 但是在像Java這樣的語言中,public方法也可以在沒有此方法的情況下訪問private成員。.為什么在這里不可能呢?

因為value試圖在全局范圍內獲取名為value的變量,所以這里您位於一個對象中,這是該對象的屬性。

因為這是Javascript,而不是Java。 即使Java語言的名稱中包含“ Java”,這兩種語言之間也沒有任何關系或相似之處。

這是因為您的范圍...您可以這樣嘗試:

var myObject = (function(){
    var value = 0,
        increment = function (inc) {
            value += typeof inc === 'number' ? inc : 1;
            return value;
        };
    return {increment:increment}
})();
console.log(myObject.increment());
console.log(myObject.increment());
console.log(myObject.increment());

每個JS函數都有對一系列作用域的引用,在該作用域中它嘗試查找變量。 該鏈如下:

  • 當前函數的局部變量
  • 調用它的函數的局部變量
  • (...)
  • 全局變量

當前對象(及其字段)不在鏈中,因此必須使用this進行引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM