object需要注意的地方;
在创建一个对象:1.
var obj =new object(); obj.name="tom"; obj.age="18"; /* 这是给创建的对象进行一个传参;*/
obj["var"] = "123"; //这也是一种给对象进行传参的一个写法;
console.log(obj["var"]);//同时访问时候也需要这样去访问;
obj["123"] = 789;
var n = "123";
console.log([n]); //"789";
obj.test1 = null;
obj.test2 = undefined; //console.log(obj.test2)打印出一个undefined;
obj.test3 = true; //同样的道理也会打印出true;
console.log(obj.test1);//null 在console.log打印下会输出的一个null 不会报错;
//js的数据类型可以是任意的数据类型;甚至它也可以是一个对象如:
obj.test =obj2 ;var obj2 = {name : "猪八戒"}; console.log(obj.test); //打印出name = "猪八戒"
/* in 运算符
* -通过该运算符可以检查一个对象中是否含有指定的属性
* 如果有则返回true,没有则返回false;
* -语法:
* “属性名” in 对象
*/
console.log("test" in obj);
var obj2= //这也是创建对象的一种方法;
{
name:"xiaobai",
"age":"23" //在对象中 属性名是允许带引号的;但是我建议不要去带。
};
var obj3 =
{
name:"ton",
age:"18"
}
var obj4 = obj3;
console.log(obj4.name); // 打印出“ton”。
如果我改变 obj3.name = "lily";
console.log(obj4.name); 打印出”lily“。
那么我现在改变 obj4 = null;
console.log(obj3.name); 打印出“lily”
注释:这里obj3是在堆里创建的对象,它只是拿到一个堆内存放的地址如 0x123,同样obj4是复制obj3的地址 来进行操控。
如果我创建2个obj 如:
var obj5 =
{
name:"ton",
age:"21"
};
var obj6=
{
name:"ton",
age:"21"
}
obj5 == obj6;
那么我改变
obj5.name ="tom";
console.log(obj6.name); //打印输出“ton”。
注释:这里他们虽然都相同,但是各自创建的对象都是在堆里创建,且是不同的块,所以当obj5改变时候 obj6不会改变。
实际开发中一定要注意。