[英]Accessing nested properties in functions via arrays: Javascript
我可以找到一個一級屬性,但是它不能讓我訪問color下的“ tint”屬性。 通常,您只要將圓點使用到想要達到的水平即可,但對我而言不起作用。
obj = new Object();
obj.color.tint = "brick red";
alert(obj.color);
var arr = [];
arr[0] = obj;
alert(arr[0].color.tint);
obj.color.tint = "brick red";
這部分將失敗,因為color
不存在。 JavaScript不會“自動填充”這些空白。 您必須先將color
定義為對象,然后才能為其分配tint
。
var obj = {};
obj.color = {};
obj.color.tint = 'brick red';
此外,可以將其簡化為:
var obj = {
color: {
tint: 'brick red'
}
};
obj = new Object(); obj.color = new Object(); // Try add this line obj.color.tint = "brick red"; alert(obj.color); var arr = []; arr[0] = obj; alert(arr[0].color.tint);
我不確定“ 您只會將圓點使用到想要達到的水平 ”這一說法
基本上Javascript都是關於對象的,您可以使用點符號來訪問現有的對象 。
您可以訪問obj.color
是因為首先將obj
初始化為對象。
因此,類似地,如果要在obj.color
下設置屬性,則必須obj.color
初始化為新對象,然后可以根據需要訪問obj.color.*
。
您不能鏈接點符號來創建嵌套的元素,因為在您嘗試訪問其屬性時未定義color
。
Onw的方法:
var obj = new Object();
obj.color = {};
obj.color.tint = 'tint';
要么:
var obj = new Object();
obj.color = {tint:'tint'};
您不能將屬性分配給不存在的對象。 首先,您必須創建該對象。 但是有時候這是必要的。 假設您要動態地擁有該數組對象結構。 我已經開發了一個對象方法來實現這一目標,即Object.prototype.setNestedValue()
工作原理如下:
Object.prototype.setNestedValue = function(...a) { a.length > 2 ? typeof this[a[0]] === "object" && this[a[0]] !== null ? this[a[0]].setNestedValue(...a.slice(1)) : (this[a[0]] = typeof a[1] === "string" ? {} : new Array(a[1]), this[a[0]].setNestedValue(...a.slice(1))) : this[a[0]] = a[1]; return this; }; var arr = [].setNestedValue(0,"color","tint","brick red"); console.log(JSON.stringify(arr));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.