《JavaScript高级程序设计》总结——第6章:面向对象的程序设计

版权声明:转载请先告知哦 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
  • 构造函数与其他函数的唯一区别:调用方式不同
  • 优点:
  • 缺点:
4、组合使用构造函数模式和原型模式
5、动态原型模式
6、寄生构造函数模式
7、稳妥构造函数模式

三、继承

1、原型链
2、借用构造函数
3、组合继承
4、原型式继承
5、寄生式继承
6、寄生组合式继承

四、小结

猜你喜欢

转载自blog.csdn.net/PINK789/article/details/87460421