簡體   English   中英

Object 屬性以點表示法調用,顯示 console.log 'undefined'

[英]Object property called with dot notation showing console.log 'undefined'

Javascript 相當新。

我能否解釋一下為什么 displayMyList 的 object 屬性在使用點符號日志作為“未定義”訪問時,但是當放入 function 時它工作正常。 為什么僅使用控制台日志顯示未定義? 為什么它不顯示,為什么需要 function 來顯示。

這是代碼。

var toDoList = {
// Holding the List 
myList: ['List1', 'List2', 'List3', 'List4', 'List5'],
// Displaying the List
displayMyList: console.log(this.myList)
}

當我嘗試使用點符號訪問 object 屬性 displayMyList 時,這會將其顯示為“未定義”。 但是,當使用一種方法時,它會很好地顯示列表。 我想知道為什么會這樣?

 var toDoList = {
    // Holding the List 
    myList: ['List1', 'List2', 'List3', 'List4', 'List5'],
    // Displaying the List
    displayMyList: function(){
  console.log(this.myList)
}
    }

首先,查看: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this


var toDoList = {
  // Holding the List 
  myList: ['List1', 'List2', 'List3', 'List4', 'List5'],
  // Displaying the List
  displayMyList: console.log(this.myList)
}

上面的第一個示例存在幾個問題。

var toDoList = {
  // Holding the List 
  myList: ['List1', 'List2', 'List3', 'List4', 'List5'],
  // Displaying the List
  displayMyList: function() {
    console.log(this.myList)
  }
};

這解決了這些問題,您是:

  • 將 displayMyList 指定為 FUNCTION ,稍后您將在toDoList的上下文中運行它this

請注意此處使用function關鍵字如何將this重新綁定到包含 object。

// Won't work
const x = toDoList.displayMyList;
x();

// Won't work
toDoList.displayMyList.call(globalThis);

// Won't work
toDoList.displayMyList.apply({});

您需要使用object 方法來記錄您的列表

 var toDoList = { // Holding the List myList: ['List1', 'List2', 'List3', 'List4', 'List5'], // Displaying the List displayMyList() { console.log(this.myList) }, } toDoList.displayMyList()

暫無
暫無

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

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