通过普通属性,排序属性和隐藏类提升对象属性认知
var obj = {}; obj.p1 = "str1"; obj.p6 = "str6"; obj.p2 = "str2"; obj[1] = 'num1'; obj[6] = 'num6'; obj[2] = 'num2'; for (var p in obj) { console.log("property:", obj[p]) } // property: num1 // property: num2 // property: num6 // property: str1 // property: str6 // property: str2
常规属性
键为字符串的属性
特点:根据创建时的顺序排序
var obj = {}; obj.p1 = "p1"; obj.p6 = "p6"; obj.p2 = "p2"; for (var p in obj) { console.log("property:", p) }
排序属性
属性键值为数字的属性
特点∶按照索引值大小升序排序
数字字符串属性也是排序属性
var obj = {}; obj[1] = 'p1'; obj[6] = 'p6'; obj[2] = 'p2'; for (var p in obj) { console.log("property:", p) }
字符串排序属性
var obj = {}; obj['1'] = 'p1'; obj['6'] = 'p6'; obj['2'] = 'p2'; for (var p in obj) { console.log("property:", p) }
字符串索引数组
var arr = [0, 1, 2, 3, 4]; console.log(arr["2"]); console.log(arr["3"]); console.log(arr["4"]);
对象上包含的2个隐藏属性,包含elements
和properties
属性。分别指向elements
对象,properties
对象。执行索引的操作的时候v8
会先从elements
对象遍历读完所有属性之后,在遍历propertie
属性。
对象内属性
何为对象内属性∶被保存到对象自身的常规属性,不需要先去访问elements
和properties
属性,可以直接访问。
内属性的数量:一般为10个
我怎么知道哪些是内属性
function CustomObject(eCount, pCount) { for (let i = 0; i < eCount; i++) { this[i] = `e-${i}` } //添加常规属性 for (let i = 0; i < pCount; i++) { this[`p-${i}`] = `p-${i}` } }
// 排序属性6, 普通属性6个 var obj = new CustomObject(2, 2);
并没有properties
属性