簡體   English   中英

Javascript:在對象文字中調用函數

[英]Javascript: Calling a function in an object literal

我正在學習用Javascript編程,希望獲得一些幫助/說明。

我聲明了一個包含動物名稱的數組。 我定義了一個函數,用於將字符串分成兩部分。 然后,我創建一個空的對象文字,並添加一個動物和相應的品種。 我正在嘗試在對象文字中調用SepatureWords函數,但是我需要澄清一下。 這是我的代碼:

var myPets = ["Bengal Bobcat", "Beagle"];

var separateWords = function (string) {
    return string.split(" ");
};

var nameCollection = {};
nameCollection.cat = separateWords(myPets[0]);  
nameCollection.dog = myPets[1];
nameCollection.fish = null;

當我輸入console.log(nameCollection)時,我得到以下信息:

Object {cat: Array[2], dog: “Beagle”, fish: null}
cat: Array[2]
0: "Bengal"
1: "Bobcat"
length: 2

但是,當我輸入console.log(splitWords(myPets [0]))時,我看到:

[“Bengal”, “Bobcat”]

我不明白為什么cat的值顯示為Array [2]。

控制台將其顯示為Array [2],因為如果將其完全展開,它將(可能)無法讀取。 一種查看所有內容的方法是使用JSON.stringify進行字符串化,它以遞歸方式遍歷對象中的每個項目並對其調用toString()

 var myPets = ["Bengal Bobcat", "Beagle"]; var separateWords = function (string) { return string.split(" "); }; var nameCollection = {}; nameCollection.cat = separateWords(myPets[0]); nameCollection.dog = myPets[1]; nameCollection.fish = null; document.body.textContent = JSON.stringify(nameCollection); 

要分配給cat的結果separateWords()函數調用,傳遞myPets[0]作為參數。

myPets[0] separateWords()返回一個數組,並通過輸入myPets[0]返回一個新數組,該數組的"Bengal""Bobcat"值由空格分隔。

split()函數是使用拆分后的值創建一個數組的函數,此結果由您separateWords()的Words separateWords()函數返回,這也是分配給cat對象成員的值。

每個瀏覽器都可以根據需要實現其控制台。

因此,您的瀏覽器決定實現您描述的行為。

如果您不喜歡它,請向此瀏覽器的開發人員提出一個更好的主意。 或使用其他瀏覽器。

我假設您正在使用Chrome開發者工具或Firebug。

開發人員工具將數組和對象濃縮為易於閱讀的行,然后進一步檢查。 我的意思是,您將控制台日志中每行旁邊的小箭頭按下,以進一步檢查每個對象。 我將使用圖片進行解釋。

在這里,我要分配一個數組,然后將對象中的元素分配給該數組:

在此處輸入圖片說明

如您所見,當我記錄對象時,它顯示的是Array [2]而不是擴展數組。 在下一張圖片中,我然后擴展數組進行檢查。

在此處輸入圖片說明

為什么會這樣呢? 我首先想到的是易於閱讀。 如果您的應用程序很復雜,並且調試控制台日志眾多,則可以在一行上查看所有日志,從而更容易查找特定日志。 同樣,如果您有一個非常大且復雜的對象,則可以輕松地讀取每一行上的所有根元素,而無需遞歸擴展該對象中找到的所有對象和數組。

String.prototype.split()返回一個數組,其中包含字符串中已拆分的兩個值。 仔細閱讀。

nameCollection.cat = separateWords(myPets[0])[0]; // nameCollection.cat == Bengal
nameCollection.cat = separateWords(myPets[0])[1]; // nameCollection.cat == Bobcat

這就是javascript(和許多其他語言)的工作方式。 當您嘗試打印“ nameCollection”時,javascript不會自動完成打印cat數組的出色工作。 相反,它只是打印一些與類型相關的信息,在這種情況下,它說“ cat”是長度為2的數組。

暫無
暫無

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

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