2022-05-18 面向对象&工厂模式&构造函数

面向对象
1.面向对象和面向过程的区别
有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择
1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。
2、去饭店,张开嘴:老板!来一份鱼香肉丝!
看出来区别了吗?这就是
1是面向过程,2是面向对象。

区别:

  • 面向过程就是分析出解决问题所需要的步骤,然后用函数实现这些步骤,依次调用这些函数,在需要使用的时候;
  • 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为
2.面向对象的特点
1、封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2、继承
提高代码复用性;继承是多态的前提。
3、多态
父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
工厂模式

实际上就是函数的封装
例:封装一个产生对象的函数

function createPerson(name, age) {
    let obj = {};
    obj.name = name;
    obj.age = age;
    obj.say = function() {
        console.log(`我叫${name},今年${age}`);
    }
    return obj;
}
console.log(createPerson("张三", 18));
构造函数

也叫内置工厂模式
构造函数和普通函数没有明显的区别

普通函数的this指向window
        function createPerson(name, age) {
            this.name = name;
            this.age = age;
            this.say = function() {
                console.log(`我叫${name},今年${age}`);
            }
            console.log(this);//window
        }
        createPerson("张三", 18);

在 上面例子的基础上new出来的新的实例对象,这时候它就成了构造函数

2.构造函数的this指向实例对象
        function createPerson(name, age) {
            this.name = name;
            this.age = age;
            this.say = function() {
                console.log(`我叫${name},今年${age}`);
            }
            console.log(this); //指向实例化对象p
        }
        let p = new createPerson("张三", 18);

因此为了做区分,一般把构造函数首字母大写表示function CreatePerson(name, age) {}

创建对象的三种方式

1.直接创建let obj={};
2.构造函数创建:let obj=new Object();
3.new一个class:class A{};let obj=new A{}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值