对象
一、概述
1.什么是对象
对象是一组键值对的组合。
var obj={
a:"键值1",
b:2,
fn:function(){
return this
}
}
a,b,fn为键名,冒号后面的值为键值,键名和键值组合在一起叫做键值对。每个键值对用逗号分隔。
2.键名
对象的键名都是字符串。因此,写不写引号都是字符串。
var obj={
100:"str1",
"1 p":"str2",
'0.234':'str3'
}
obj["100"]//str1
obj["1 p"]//str2
obj['0.234']//str3
所有不规则的键名,调用的话都要用到中括号。
二、属性的操作
1.读取属性
var obj = {
str: 'Hello World'
};
obj.str
obj['str'] //使用方括号必须将键名引起来,否则会当做是一个变量
2.删除属性
var obj={ a:1,b:2,c:3}
delete obj.c
console.log(obj) //{a:1,b:2}
3.属性赋值
var obj = {};
obj.a = 'Hello';
obj['b'] = 'World';
4.查看所有属性
var obj = {};
obj.a = 'Hello';
obj['b'] = 'World';
Object.keys(obj) //['a','b'] 返回一个数组
5.检测数据是否在对象中
var obj={ a:1,b:2,c:3}
//关键字 in
“a” in obj //true
'd' in obj //false
6.对象的遍历
//for.. in循环
var obj={ a:1,b:2,c:3}
for (var i in obj){
console.log(i)//遍历所有键名
console.log(obj[i]) //遍历所有键值
}
三、with语句
var obj = {p1: 1, p2: 2,};
with (obj) {
p1 = 4;
p2 = 5;
}
// 等同于
obj.p1 = 4;
obj.p2 = 5;
注意,如果with区块内部有变量的赋值操作,必须是当前对象已经存在的属性,否则会创造一个当前作用域的全局变量。
var obj = {};
with (obj) {
p1 = 4;
p2 = 5;
}
obj.p1 // undefined
p1 // 4
with语句指代的对象并不明确。所以最好不用。
四、对象中的this
this 永远指向最后调用它的那个对象。默认指向window。
var name = "我是外部";
function a() {
var name = "我是内部";
console.log(this.name); //我是外部
console.log("inner:" + this); //innerwindow
}
a();
console.log("outer:" + this)//outerwindow
var name = "我是外部";
var a = {
name: "我是内部",
fn : function () {
console.log(this.name); //我是内部 当前this指向调用此函数的对象。
}
}
a.fn();