除了字符串,数字,true,false,null或者undefined以外,其他所有的值在JavaScript里头都是对象。
1. 字面量表示法:
对象字面量很好理解,使用key/value的形式直接创建对象,简洁方便。
var book = {}; //创建一个没有属性的对象
var book = {
name : "The Definitive Guide",
"main title" : "JavaScript", //当属性名中间有空格,或者"-"时,要用引号把属性名括起来
author : { //对象的属性也可以是对象
firstname : "Rex",
lastname : "Mai
}
};
这种方式直接通过花括号将对象的属性包起来,使用key/value的方式创建对象属性,每个属性之间用逗号隔开。
注意:如果是最后一个属性,后面就不要加逗号,因为在一些旧的浏览器下会报错。
2. 使用new关键字:
var o = new Object(); // 创建一个空对象,效果等同{}.
var d = new Date(); // 创建一个表示当前时间的对象
var r = new RegExp("js"); // 创建一个正则表达式对象
varperson = new Object();
person.name = "狼狼的蓝胖子";
person.age = 25;
或者
function Person(name, age) {
this.name = name;
this.age = age;
this.show=function(){}
}
var person = new Person("Jack",15);
Person.show()
这种方式使用new关键字,接着跟上Object构造函数,再来给对象实例动态添加上不同的属性。
其实javascript的new关键字只不过做了五件事情。
1.创建Object
2.查找class的prototype上的所有方法、属性,复制一份给创建的Object(注意,如果prototype上有属性是function或者数组或者Object,那么只复制指针)
3.将构造函数classA内部的this指向创建的Object
4.创建的Object的__proto__指向class的prototype
5.执行构造函数class
// 定义类类名字是 classA
function classA(){
this.b=1;//在里面是this
this.query=function(){…}
}
classA.prototype.b=44;//在外边是classA.prototype
classA.prototype.show = function(){
alert(this.b);
};
// 用new实例化
var b = new classA();
b.show();