一、什么是对象?
1.简介
ECMA-262将对象(object)定义为"属性的无序集合,每个属性存放一个原始值、对象或函数"(unordered collection of properties each of which contains a primitive value, object, or function)。这意味着对象是无特定顺序的值的数组。在ECMAScript中,对象由特性(Attribute)构成,特性可以是原始值,也可以是引用值。如果特性存放的是函数,它将被看作对象的方法(Method),否则该特性被看作属性(Property)。
2.本地对象(native object)
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
3.内置对象(built object)
Global、Math
4.宿主对象(host object)
BOM和DOM对象、用户自定义对象
二、对象的创建
1.字面量方式
var Person = {}; //创建一个对象 Person.name = 'niki'; //添加属性并赋值 Person.age = 23; //添加属性并赋值 //添加一个方法 Person.speak = function() { console.info("my name is " + this.name); }; Person.speak(); //调用方法
2.利用function
方式一:无参构造函数
//声明一个Person的function function Person() {} var person = new Person(); //实例化一个对象 person.name = 'niki'; //定义属性 person.age = 23; //定义属性 //定义成员方法 person.speak = function() { console.info("my name is " + this.name); }; person.speak(); //调用实例方法
方式二、有参构造函数
//声明一个Person的function function Person(name,age){ this.name = name;//赋值给属性 this.age = age;//赋值给属性 //定义对象方法 this.speak = function(){ console.info("my name is " + this.name); }; } //实例化对象 var person = new Person('niki',23); person.speak();//调用实例方法
3.Object对象创建
方式一:
//利用Object创建一个对象实例 var person = new Object(); person.name = 'niki'; //属性赋值 person.age = 23; //属性赋值 //定义方法 person.speak = function(){ console.info("my name is " + this.name); }; person.speak();//调用实例方法
方式二:
var person = Object.create(null); //创建一个空的person对象 person.name = 'niki'; //属性赋值 person.age = 23; //属性赋值 //定义方法 person.speak = function(){ console.info("my name is " + this.name); }; person.speak();//调用实例方法