对象(object):键值对的集合
- 键值对:【属性:值】
变量:值========属性一般是变量
方法:函数======如果值为函数,属性就是方法
var obj = { p: function (x) { return 2 * x; } }; obj.p(1) // 2
对象o1的属性foo指向对象o2,就可以链式引用o2的属性var o1 = {}; var o2 = { bar: 'hello' }; o1.foo = o2; o1.foo.bar // "hello" - 对象的引用:
指向同一个内存地址
var o1 = {}; var o2 = o1; o1.a = 1; o2.a // 1 o2.b = 2; o1.b // 2指向同一个对象,o1的值改变不会对o2产生影响,o2还是纸箱原来的对象
var o1 = {}; var o2 = o1; o1 = 1; o2 // {}指向同一个原始的值,变量都是值的拷贝
var x = 1; var y = x; x = 2; y // 1 - 属性的操作:【读取+赋值】
属性的读取:一种是使用点运算符,还有一种是使用方括号运算符。
方括号:
数字键可以不加引号会自动转为字符串;
运算符内部可以使用表达式; - 属性的查看方法:object.keys();
- 属性的删除:delete一个不存在的数,不报错,返回的true
- 属性是否存在:in运算符
无法识别哪些是继承的属性,哪些是自身的属性; - 属性的遍历:for..in
var obj = {a: 1, b: 2, c: 3}; for (var i in obj) { console.log('键名:', i); console.log('键值:', obj[i]); } // 键名: a // 键值: 1 // 键名: b // 键值: 2 // 键名: c // 键值: 3
for...in循环有两个使用注意点。- 它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性(如toString)。
- 它不仅遍历对象自身的属性,还遍历继承的属性。
var person = { name: '老张' }; for (var key in person) { if (person.hasOwnProperty(key)) { console.log(key); } } // name
- with语句:操作同一个对象的多个属性(最好不用,绑定的对象不明确)
定义变量后才能使用;
// 例一 var obj = { p1: 1, p2: 2, }; with (obj) { p1 = 4; p2 = 5; } // 等同于 obj.p1 = 4; obj.p2 = 5;
你的代码量决定了你的薪资水平!
浙公网安备 33010602011771号