一切皆对象(原始值+对象)
基本类型:字符串、数字、布尔、数组、对象、null、undefined
创建对象的三种方式
1、通过new关键字
var obj=new Object();
2、通过对象字面量
1)简单字面量
var obj={};
2)嵌套字面量
var obj={
name:'ll',
age:23,
todo:function(){}
}
3、构造函数
(区别一下函数声明和函数表达式)
console.log(add(2,5));
function add(a,b){
return a+b;
};//函数声明:在声明前即可使用
var add1 = function(a,b) {
return a+b;
};
add1(3,4);//函数表达式
构造函数
function Person(name,age) {
this.name = name;
this.age = age;
this.todo = function() {
return this.name;
}
}
var aa = new Person('sonia',20);
var bb = new Person('cole',23);
构造函数和普通函数的区别
1)this指向
构造函数的this指向创建的对象实例上
普通函数函数的调用者
2)调用方式
构造函数 new
3)命名方式
构造函数首字母大写
关于属性的操作
1、获取或设置属性 ./[]
var obj = {};
obj.name = 'll';
obj['age'] = 22;
区别:.是取自身的属性,[]可以是变量
例子:
var o = {};
o.name = 'xxx';
var nameA ='name';
console.log(o['nameA']);//xxx
console.log(o[nameA]);//undefined
2、属性的删除
delete o.name;
3、检测属性三种方式
1)in运算符
var o = {};
o.name = 'xxx';
o.age = 'undefined'
console.log('name' in o);
2)hasOwnProperty()
var o = {};
o.name = 'xxx';
o.age = 'undefined';
console.log(o.hasOwnProperty('name'));
3)!=undefined(不推荐)
var o = {};
o.name = 'xxx';
o.age = 'undefined'
console.log(o.age != 'undefined' );
4、枚举
遍历对象,可以取到key,也可以取到value
var o = {x:1,y:2,z:3};
var a;
for (a in o) {console.log(a)}; // x y z
for (a in o) {console.log(o[a])}; // 1 2 3
遍历数组:可以取到索引
var arr =[{x:1},{y:2},{z:3}];
for (a in arr ){console.log(a)} // 0 1 2
遍历数组的方法
//同步:阻塞
for(var i = 0;i<10; i++){
}
//异步:非阻塞
var data = msg;
$.each(data,function(index,item) {
})
5、序列化对象
var o2 = {x:1,y:2,z:3};
console.log(JSON.stringify(o2));
JSON.parse();//深拷贝(完全独立的)
例:
var o3 = {x:1,y:2,z:3};
var p = o3;
o3.x = 111;
console.log(p); //{x:111,y:2,z:3}