资讯专栏INFORMATION COLUMN

JavaScript面向对象编程

Carbs / 2689人阅读

摘要:基本概念面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。使用面向对象编程是为了促进更好的灵活性和可维护性。面向对象与面向过程比较,面向过程更注重过程。

1:基本概念

面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。

这句话的意思是:每个对象能够接受信息,处理数据和发送消息给其他对象;这就意味着在这个编程模式下,每一个对象都是一个独立的个体,它可以接收,可以处理,然后再把消息发送出去。每个对象都可以被看作是一个拥有清晰角色或责任的独立个体。

使用面向对象编程是为了促进更好的灵活性和可维护性。

面向对象的重要知识点:

Namespace命名空间

Class 类(定义对象的属性和方法)

Object 对象(类的一个实例)

Property 属性(对象的特征)

Method 方法(对象的能力)

Constructor 构造函数(对象初始化的瞬间被调用的方法)

Inheritance 继承(继承另一个类的特征)

Encapsulation 封装(把数据和相关的方法绑定在一起使用)

Polymorphism多态(不同类可以定义相同的方法或属性)。

面向对象与面向过程比较,面向过程更注重过程。

2:Namespace 命名空间

命名空间只是另一个包含方法、属性和对象的对象。在js中要有独立的命名空间,首先需要创建全局变量,不同的全局变量用于区分不同的命名空间。因为js最顶层只有一个全局的命名空间,然后在全局变量上面增加一些变量、方法和功能,这些就是这个对象的属性。

命名空间是一个包含方法,属性和对象的对象

  var myNameScape = myNameScape || {};
  
  // 子命名空间 
  myNameScape.event = {};
  
  // 定义方法和属性 
  myNameScape.commonMethods = {
      name: "",
      validateName: function(name){
          // name格式验证 
      },
  };
  
  // 定义方法 
  myNameScape.event = {
      addListener: function(el, type, fn) {
          // ... 
      },
      removeListener: function(el, type, fn) {
          // ...
      },
  }

内置对象
常见的内置对象:Math、Array、Object

3:Class 类(构造函数)

因为JavaScript是一种基于原型的语言,所以没有类声明语句。因此这个类就是构造函数。

它是用方法作类,比如:

    function Person(){
        
    }
    
    var Person = function(){
    

或者当我们要把Person实例化时,我们需要重新new Person,然后我们就得到了Object也就是对象。

4:Object 对象(类的实例)
    function Person(){
        
    }
    var person1 = new Person();
    var person2 = new Person();
5:构造器(Constructor)

构造器是对象中的一个方法,每次实例化都会被调用;JavaScript中函数可以作为构造器使用;每个声明的函数都可以在实例化后被调用执行。

    function Person(){
       console.cog("Person created!");
    }
    var person1 = new Person();
    var person2 = new Person();
6:Property 属性

类中包含的变量。

    function Person(firstName) {
        this.firstName = firstName;
        console.log("Person created!");
    }
    
    var person1 = new Person("Alice");
    var person2 = new Person("Bob");
7:Method 方法

方法与属性相似;方法是函数,属性可以被定义为函数。

    function Person(firstName) {
        this.firstName = firstName;
    }
    Person.prototype.sayHello = function(){
        console.log("Hello,I"m" + this.firstName);
    };
    
    var person1 = new Person("Alice");
    var person2 = new Person("Bob");
8:Inheritance 继承

继承:子类可以使用父类的所有功能,并且对这些功能进行扩展。继承的过程,就是从一般到特殊的过程。

继承本质上一个是原型链继承,一个是构造函数继承,在此之后也衍生出很多,一般来讲,最好的方法就是第三种继承:混合继承。借助原型链和构造函数继承来达到一个较完善的效果。

9:Encapsulation 封装(把数据和相关的方法绑定在一起使用)

封装:把客观事物封装成抽象的类,隐藏属性和方法的实现细节,仅对外公开接口。

    function Person(name, age, sex){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    Person.prototype.show = function (){
        console.log(this.name + " " + this.sex + " " + this.age);
    }
    var person = new Person("Eric", 18, "男");
10:Polymorphism 多态

多态就是通过对传递的参数判断来执行逻辑,即可实现一种多态处理机制。

多态实际上是同一操作作用于不同的对象, 可以有不同的解释, 产生不同的执行结果。

多态最根本的作用就是通过把过程化的条件语句转化为对象的多态性,从而消除这些条件分支语句。

    function Person(name, age){
        this.name = name;
        this.age = age;
    }
    
    Person.prototype.toString = function() {
        return "I am a Person, my name is " + this.name;
    }
    
    function Man(name, age){
        Person.apply(this, arguments);
    }
    
    Man.prototype = Object.create(Person.prototype);
    
    Man.prototype.toString = function() {
        return "I am a Man, my name is"+this.name;
    }
    
    var person = new Person("Neo", 19);
    var man1 = new Man("Davin", 18);
    var man2 = new Man("Jack", 19);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106192.html

相关文章

  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    AaronYuan 评论0 收藏0
  • JavaScript面向对象编程——面向对象

    摘要:面向对象面向对象的概述面向对象是什么面向对象编程的全称是,简称。面向对象编程是用抽象方式创建基于现实世界模型的一种编程。面向对象编程可以看做是使用一系列对象相互协作的软件设计。面向对象编程的山歌主要的特征是封装继承多态。 面向对象 面向对象的概述 面向对象是什么 面向对象编程的全称是Object Oriented Programming,简称OOP。面向对象编程是用抽象方式创建基于现实...

    SimonMa 评论0 收藏0
  • 再和“面向对象”谈恋爱 - 面向对象编程概念(三)

    摘要:说到底面向对象才是程序语言的根本。其实面向对象编程说的就是自定义对象。里并没有类的概念,所以严格上来讲这是个假的面向对象里的面向对象编程现在好了,终于听到别人鄙视我们了,给我们提供了类这个概念,其实是向传统语言更靠齐了。 通过前两篇文章,我们了解了对象的概念以及面向对象里的相关概念等知识,那前面说了对象分类里的前两种,这篇文章要详细去说第三种自定义对象,那真正的好戏这就来了! 面向对象...

    Cruise_Chan 评论0 收藏0
  • Javascript面向对象编程

    摘要:如果要理解基于原型实现面向对象的思想,那么理解中得三个重要概念构造函数原型原型链对帮助理解基于原型的面向对象思想就显得尤为重要。函数对象的原型在中,函数是一种特殊的对象,所有的函数都是构造函数的实例。 介绍 和java这种基于类(class-base)的面向对象的编程语言不同,javascript没有类这样的概念,但是javascript也是面向对象的语言,这种面向对象的方式成为 基...

    wanglu1209 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<