JavaScript中的值是傳值還是傳址?

答案是:取決於具體情況! 原始資料類型是按值傳遞。 物件是按址傳遞。 原始資料類型包括數字、字串、布林值、null、undefined和符號。 除了原始資料類型外,其他都是物件。陣列是物件。函式是物件。 當你將一個數字傳遞給一個函式時,它將被複製到該函式內部: const increment = num => { num = num + 1 } const num = 2 increment(num) console.log(num) //2 如果你傳遞一個物件,它將按址傳遞,所以如果你修改其中一個屬性,原始物件也會被修改: const increment = num => { num.value = num.value + 1 } const num = { value: 2 } increment(num) console.log(num.value) //3

The Object preventExtensions() method

了解JavaScript Object物件的preventExtensions()方法 JavaScript的preventExtensions()方法是Object物件中的一種方法,它接受一個物件作為參數,並返回相同的物件。傳遞的物件會被改變,成為一個不接受新屬性的物件。無法添加新的屬性,但可以刪除現有的屬性,並且可以更改現有的屬性。 範例: const dog = {} dog.breed = 'Siberian Husky' Object.preventExtensions(dog) dog.name = 'Roger' //TypeError: Cannot add property name, object is not extensible 傳遞的參數也會作為參數返回,因此dog === myDog(它們是同一個物件)。 我們無法添加新的屬性,但可以刪除現有的屬性: const dog = {} dog.breed = 'Siberian Husky' dog.name = 'Roger' Object.preventExtensions(dog) delete dog.name dog //{ breed: 'Siberian Husky' }

valueOf()方法:物件的取值方法

找出關於JavaScript物件的valueOf()方法的所有資訊。 在物件實例上調用時,返回其基本值。 const person = { name: 'Fred' } person.valueOf() //{ name: 'Fred' } 這個方法通常只在JavaScript內部使用,很少在使用者代碼中實際被呼叫。

如何在 JavaScript 物件中檢查是否存在特定的鍵

使用 JavaScript 物件時,你可以使用 in 運算子來檢查是否存在特定的鍵。 假設有一個 car 物件: const car = { color: 'blue' } 我們可以使用下面的語句來檢查 color 屬性是否存在,並且會返回 true: 'color' in car 我們可以將其用於條件判斷式中: if ('color' in car) { } 另一種方法是使用物件的 hasOwnProperty() 方法: car.hasOwnProperty('color') 當繼承在應用程式結構中扮演重要角色時,不同之處在於 in 運算子即使對於從父物件繼承的屬性也會返回 true,而 hasOwnProperty() 則不會。只有在物件直接擁有該屬性時,它才會返回 true,而不是其祖先物件之一。 如果你想要取得一個屬性,並且如果該屬性不存在則返回預設值,可以使用後備機制: car.brand || 'Ford' 如果物件上不存在 brand 屬性鍵,則該語句會返回字串 Ford。

如何從 JavaScript 物件中刪除屬性

有多種方法可以從 JavaScript 物件中刪除屬性。找出替代方案和建議的解決方法。 從物件中刪除屬性的語意正確的方式是使用 delete 關鍵字。 給定以下物件 const car = { color: 'blue', brand: 'Ford' } 您可以使用以下方式從物件中刪除屬性 delete car.brand 也可以這樣表達: delete car['brand'] delete car.brand delete newCar['brand'] 將屬性設置為 undefined 如果您需要以非常優化的方式執行此操作,例如在循環中對大量物件進行操作時,那麼另一個選擇是將屬性設置為 undefined。 由於 delete 的性質,它的性能比簡單地將屬性重新賦值為 undefined 要慢很多,超過 50 倍。 但是,請記住,該屬性並未從物件中刪除。它的值被清除,但如果您遍歷物件,它仍然存在: 使用 delete 仍然非常快速,只有在有非常好的理由時才應該考慮這種性能問題,否則最好具有更清晰的語意和功能。 在不改變物件的情況下刪除屬性 如果 mutability 是一個關注點,您可以通過從舊物件複製所有屬性(除去要移除的屬性)來創建一個完全新的物件: const car = { color: 'blue', brand: 'Ford' } const prop = 'color' const newCar = Object.keys(car).reduce((object, key) => { if (key !== prop) { object[key] = car[key] } return object }, {}) (參見 Object....

如何計算 JavaScript 物件的屬性數量

了解如何計算 JavaScript 物件擁有多少屬性 使用 Object.keys() 方法,將要檢查的物件傳入,獲取物件的所有 (自身) 可枚舉屬性的陣列。 然後通過檢查 length 屬性來計算該陣列的長度: const car = { color: '藍色', brand: 'Ford', model: 'Fiesta' } Object.keys(car).length 我提到了可枚舉屬性。這表示它們的內部可枚舉標誌設置為 true,這是默認值。請參考 MDN 了解更多關於這個主題的信息。