逆战班----关于js面向对象的学习总结

面向对象,全称为Object Oriented Programming ,缩写为OOP。

面向对象具有三大特征

封装、继承、多态

1.封装:内部运作隐藏在对象里面,只有基本功能暴露给用户。
2.继承:子类继承父类
3.多态:不同的对象可以共享相同方法

创建js对象的方法
1.普通模式

*var person=new Object();
person.name="a";
person.age=18;
person.sayHi=function(){
console(this.name);
}*

2.工厂模式

function person(name,age){
var p=new Object();
p.name=name;
p.age=age;
p.sayHi=function(){
console(this.name);
};
return p;
}

3.构造函数模式

function person(name,age){
this.name=name;
this.age=age;
this.sayHi=function(){
alert(this.name);};
}
var p1 = new person("a",18);
var p2 = new person("b",19);
p1.sayHi();
p2.sayHi();

4.原型模式

function person(name,age){
this.name=name;
this.age=age;
}
person.prototype.sayHi=function(){
alert(this,name);
}
var p1 = new person("a",18);
var p2 = new person("b",19);
p1.sayHi();
p2.sayHi();

原型对象

1、每个对象都有一个原型对象,可以通过_proto_属性来访问到对象的原型对象。
2、通过_proto_属性一直向上寻找原型对象的话,最终会找到null
3、构造函数的prototype属性指向一个对象,这个对象是该构造函数实例化出来的对象的原型对象。
4、js中的根对象是Object.prototype,Object.prototype对象是一个空对象。
5、js中的每一个对象,都是从Object.prototype对象克隆而来的。Object.prototype对象就是他们的原型对象,而Object.prototype对象的原型是null。

ES6新增的class

class CreatePerson{
    constructor(){}
    自定义方法名(){}
}

CreatePerson等价于构造函数的名字
constructor(){}等价于构造函数的函数体
自定义方法名(){}等价于绑定在构造函数原型上的方法

function CreatePerson(n,a){
    this.name = n;
    this.age = a;
}
CreatePerson.prototype.show = function(){
    console.log(this.name + "---" + this.age);
}
等价于
class CreatePerson{
    constructor(n,a){
        this.name = n;
        this.age = a;
    }
    show(){
        console.log(this.name + "---" + this.age);
    }
}

var p1 = new CreatePerson("admin",18)
p1.show();

prototype:专属于函数的一个属性,类型为对象,叫原型对象。
作用:为了给将来自身所在的构造函数被new出来的实例做父级使用的
proto:专属于对象数据的一个属性,类型为对象,叫隐式原型。
作用:找父级。
特性:
1.当某个对象自身不具有某个属性或方法时,会找父级
2.当这个对象是被new出来的实例时,这个对象的父级(proto)就是当前被new的这个构造函数的prototype
通过构造函数找到prototype,添加的属性或方法,在将来new出来的实例的父级身上都可以找到

构造函数的问题的解决方案:

在使用构造函数方式创建对象时:
    将将来的属性,写在构造函数内部,通过this绑定给将来的实例。
    将将来的方法,写在构造函数的原型上,会自动被将来的实例获取。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值