一、什么是对象
面向对象语言有一个标志,就是类(class)的概念,通过类可以创建任意多个具有相同属性和方法的对象。但是ECMAScript没有类的概念,所以它的对象与其他基于类的语言中的对象有所不同。
ECMA-262把对象定义成:“无序属性的集合,其属性包含基本值、对象或者函数。”这句话可以理解为,对象是由一组没有顺序的键值对组成的,值的类型可以为基本值(string、number、boolean、undefined、null)、对象或者函数。
二、创建对象的方法
ECMAScript和别的面向对象有什么区别呢?首先先说一下它有哪些声明对象的写法。
- 创建对象最简单的方法是声明一个Object,然后为它添加属性和方法。
var person = new Object();
person.name = '张三';
person.age = 20;
person.sayName = function() {
alert(this.name);
};
- 对象字面量语法,上面代码改写如下:
var person = {
name: '张三',
age: 20,
sayName = function() {
alert(this.name);
}
}
- Object对象提供的create方法,create方法的第一个参数会把传入的对象变成原型上的值,效果就是执行了语句
o.__proto__ = person
。
var person = {
name: '张三',
age: 20,
sayName: function() {
console.log(this.name);
}
};
var o = Object.create(person);
o.name = '李四';
o.age = 24;
- new关键字
function person() {
this.name = '张三';
this.age = 20;
this.sayName = function() {
console.log(this.name);
}
}
var o = new person()