ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面向对象

2022-08-13 19:02:13  阅读:113  来源: 互联网

标签: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
来源: https://www.cnblogs.com/-lsg10026244/p/16583781.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有