JavaScript中的面向对象及原型和原型链
一、面向对象概述:
面向对象是一种编程思维(oop Object Oriented Programming),简单来说就是对应的对象做对应的操作,面向对象的核心就是将内容抽取为属性、将行为抽取为方法
二、面向对象的特点
- 封装
- 继承
- 多态
三、创建对象
- 使用new关键词创建对象
function Person(){
console.log(this);
}
var person = new Person()
person.name ="jack"
- 使用工厂模式创建对象
function factor(name){
var obj = new Object()
obj.name = name
return obj
}
var person = factor("jack")
console.log(person);
- 通过花括号创建对象
var person = {
name:'张三',
age:18,
eat(){
console.log("吃饭")
}
}
- 构造函数创建对象
function Color(color){
this.color = color;
}
var myColor = new Color("红色");
var myColor1 = new Color("蓝色");
alert(myColor1.color);
四、原型
prototype(显式原型)
显式原型是每一个函数都具有的原型对象,只有函数有显式原型,显式原型上能存放一些内容,这意味着,我们可以把那些不变(公用)的属性和方法,直接定义在prototype对象属性上。
__proto__(隐式原型)
隐式原型是每一个对象都拥有的,它是连接函数显式原型的
五、原型链
原型链:实例对象与原型之间的连接,叫做原型链。
简单的来说就是隐式原型向父类隐式原型向上找内容的过程
原型链向上找,如果找不到就继续向上找,一直找到顶层对象Object,如果顶层对象没有就返回一个null