首页 > 其他分享 >面向对象

面向对象

时间:2022-08-13 19:02:30浏览次数:49  
标签:Person 对象 age 面向对象 sayHello 构建 new

一、面向对象与面向过程的区别

1、面向过程(过程化).

面向过程的思想是把一个项目、一件事情按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。

2、面向对象:强调类的概念,通过类可以创建任意多个具有相同属性和方法的实例对象。

面向对象的思想是把一个项目、一件事情分成更小的项目,或者说分成一个个更小的部分,每一部分负责什么方面的功能,最后再由这些部分组合而成为一个整体。

二、构建对象

new的使用

以 new 操作符调用函数的时候,函数内部发生以下变化:

  1. 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
  2. 属性和方法被加入到 this 引用的对象中。
  3. 并且最后隐式的返回 this (创建也是隐式)。

使用new关键字来实例化对象

(1)利用类里面的构造器来构建对象(es6的)类组件

        class Person{
          constructor(age){ //构造器 其实就是一个构造函数
          	this.age = age
          }
        }
        //new 关键词来构建
        var person = new Person(18)

(2)使用构造函数来构建 (es3的) 函数组件

        function Person(age){
        	this.age = age
        }
        //new关键词来构建
        var person = new Person(18)

构建函数的步骤

  • 自动构建对象
  • 手动添加属性
  • 自动返回对象

使用工厂模式来构建对象

(1)工厂模式构建对象的步骤

  • 手动初始化一个对象
  • 手动给这个对象添加属性
  • 手动将这个对象返回

(2)工厂模式构建对象的不足

  • 不能很好的去将细节补充
  • 可以构建任何对象
  • instanceof 返回的值只能是Object
        //当前这个类的类型是否是Person类型
        console.log(person instanceof Person); //false
        console.log(person instanceof Object); //true
        function factory(age){
        	//声明一个对象
        	var obj = new Object()
        	obj.age = age
        	return obj
        }
        var person = factroy(18)

三、抽取对象

  • 不会动的(名词)抽为属性
  • 会动的的 (动词)抽成方法

四、static静态修饰

static修饰的函数 使用类名.方法名
static修饰的函数 只会初始化一次 (每次调用的都是同一个函数)

        class Person{
            constructor(){

            }
            run(){
                console.log('run');
            }
            static sayHello(){
                console.log('hello');
            }
        }
        new Person().run()
        //静态函数 调用 使用类名.方法名 (static修饰的函数 声明一次)
        Person.sayHello()
        Person.sayHello()
        Person.sayHello()
        Person.sayHello()
        console.log(Person.sayHello == Person.sayHello);//true

标签:Person,对象,age,面向对象,sayHello,构建,new
From: https://www.cnblogs.com/-lsg10026244/p/16583781.html

相关文章

  • 面向对象:多态
    多态就是同一个方法根据不同的发送对象而采取多种不同的操作(属性没有多态!)一个对象的实际类型是确定的例如:newPerson();newStudent();但是可以指向对象的引用的类......
  • 面向对象的介绍
    概述面向对象是一种编程思想(oop),他是将对应的过程替换成对应的对象,而不做去追求对应的过程实现,而通过去找对象的方式实现。综合思想:找有这个功能的对象,做这个事情。(面向对......