版权声明:转载请先告知哦 https://blog.csdn.net/PINK789/article/details/87460421
一、理解对象
1、属性类型
数据属性
- 作用:数据属性包含一个数据值的位置
- 特性:四个描述数据属性行为的特性:
- [[Configurable]]:
- [[Enumerable]]:
- [[Writable]]:
- [[Value]]:
访问器属性
2、定义多个属性
3、读取属性的特性
二、创建对象
1、两种普通模式
- 普通模式一:使用new 操作符创建
var person = new Object();
person.name = "Nicholas";
person.age = 26;
person.job = "teacher";
person.sayName = function(){
console.log(this.name);
}
- 普通模式二:使用对象字面量模式
var person = {
name:"Nicholas";
age:26;
job:"teacher";
sayName:function(){
console.log(this.name);
}
}
2、工厂模式
- 工厂模式创建对象语法
function creatPerson(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
console.log(this.name);
};
return o;
}
var person1 = createPerson("Tom",23,"engineer");
var person2 = createPerson("Merry",27,"teacher");
- 优点:解决了创建多个相似对象的问题;
- 确定:未解决对象类型识别的问题;
3、构造函数模式
- 构造函数创建对象语法
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
console.log(this.name);
}
}
var person1 = new Person("Tom",23,"engineer");
var person2 = new Person("Merry",27,"teacher");
- 使用new操作符创建对象经历的4个步骤
1、 创建一个新对象
2、将构造函数的作用域付给新对象(因此this指针指向该新对象);
3、执行构造函数中的代码,为新对象添加属性;
4、返回新对象; - person1和person2分别保存着Person的一个不同的实例,这两个对象都有一个constructor(构造函数)属性,该属性指向Person
person1.constructor == Person; //true
person1 instanceof Object; //true
person1 instanceof Person; //true
- 构造函数与其他函数的唯一区别:调用方式不同
- 优点:
- 缺点: