[英]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.