栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

JavaScript面向对象编程三大特点

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript面向对象编程三大特点

1.什么是面向对象

把客观对象抽象成属性数据和对数据的相关操作,把内部细节和不想关的信息隐藏起来,把同一个类型的客观对象的属性数据和操作绑定在一起,封装成类,并且允许分成不同层次进行抽象,通过继承实现属性和操作的共享。

  • 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
  • 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

它有三大特点:继承、封装、多态。接下来我们一一介绍:

2.继承

子类继承父类,继承可以把公共方法抽离出来,提高复用,减少冗余

class Animal{
    constructor(name) {
 this.name=name;
    }
    eat() {
 console.log(`${this.name} eat`)
    }
    speak() {
    }
}
let animal=new Animal('动物');
animal.eat();
class Dog extends Animal{
    constructor(name,age) {
 super(name);
 this.age=age;
    }
    speak() {
 console.log(`${this.name} is barking!`);
    }
}
let dog=new Dog('',5);
dog.eat();
dog.bark();
3.封装

把数据封装起来,减少耦合,不该外部访问的不要让外部访问。利于数据的接口权限管理,ES6 目前不支持,一般认为_开头的都会私有的,不要使用。
如何实现:

  • public:公有修饰符,可以在类内或者类外使用public修饰的属性或者行为,默认修饰符
  • protected:受保护的修饰符,可以本类和子类中使用protected修饰的属性和行为
  • private : 私有修饰符,只可以在类内使用private修饰的属性和行为
class Animal {
    public name;
    protected age;
    private weight;
    constructor(name,age,weight) {
 this.name=name;
 this.age=age;
 this.weight=weight;
    }
}
class Person extends Animal {
    private money;
    constructor(name,age,weight,money) {
 super(name,age,weight);
 this.money=money;
    }
    getName() {
 console.log(this.name);
    }
    getAge() {
 console.log(this.age);
    }
    getWeight() {
 console.log(this.weight);
    }
}
let p=new Person('zfpx',9,100,100);
console.log(p.name);
console.log(p.age);
console.log(p.weight);
4.多态

所谓多态,就是指一个引用类型在不同情况下的多种状态。在java中多态是指通过指向父类的引用,来调用在不同子类中实现的方法。
js实际上是无态的,是一种动态语言,一个变量的类型是在运行的过程中由js引擎来决定的,所以说js天生就支持多态。

class Animal {
    public name;
    protected age;
    private weight;
    constructor(name,age,weight) {
 this.name=name;
 this.age=age;
 this.weight=weight;
    }
}
class Person extends Animal {
    private money;
    constructor(name,age,weight,money) {
 super(name,age,weight);
 this.money=money;
    }
    speak() {
 console.log('你好!');
    }    
}
class Dog extends Animal {
    private money;
    constructor(name,age,weight) {
 super(name,age,weight);
    }
    speak() {
 console.log('汪汪汪!');
    }    
}
let p=new Person('zfpx',10,10,10);
p.speak();
let d=new Dog('zfpx',10,10);
d.speak();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/244802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号