JS高级----面向对象


面向对象

面向对象是一种编程思想。
主要是把事物给对象化,包括其属性和行为。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象。

构造函数:

构造函数是专门用于创建对象的函数,如果一个函数使用 new 关键字调用,那么这个函数就是构造函数。

  • 使用 new 关键字调用函数的行为被称为实例化
  • 实例化构造函数时没有参数时可以省略 ()
  • 构造函数的返回值即为新创建的对象
  • 构造函数内部的 return 返回的值无效!
        function foo(a) {
            console.log(a);

            console.log(1111);
            return '返回了';
        }
        // 通过new调用函数
        var reData = new foo(3);
        console.log(reData);

在这里插入图片描述

实例成员:

通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员。

  • 构造函数内部 this 实际上就是实例对象,为其动态添加的属性和方法即为实例成员

  • 为构造函数传入参数,动态创建结构相同但值不同的对象

  • 实例对象的 constructor 属性指向了构造函数

  • instanceof 用于检测实例对象对应的构造函数

    注意:构造函数创建的实例对象彼此独立互不影响。

        function Person() {
            this.name = 'zs';
            this.sayHi = function() {
                console.log("Hello!!");
            }
        }
        // 创建Person的实例对象  现在p1就是this
        let p1 = new Person();

        console.log(p1);
        console.log(p1.name);
        p1.sayHi();

在这里插入图片描述

        function Person() {
            this.name = 'zs';
            this.sayHi = function() {
                console.log("Hello!!");
            }
        }
        // 创建Person的实例对象  现在p1就是this
        let p1 = new Person();
        // 查看指向哪个构造函数
        console.log(p1.constructor);
        // 检测实例对象是否是某一个类的对象
        console.log(p1 instanceof Person);

在这里插入图片描述

静态成员:

Js 中底层函数本质上也是对象类型,因此允许直接为函数动态添加属性或方法,构造函数的属性和方法被称为静态成员。

  • 静态成员指的是添加到构造函数本身的属性和方法
  • 一般公共特征的属性或方法静态成员设置为静态成员
  • 静态成员方法中的 this 指向构造函数本身
        function Person() {
            this.name = 'zs'
        };

        Person.eyes = '两只';
        Person.arms = '两条';
        Person.walk = function() {
            console.log("都会走路");
            console.log(this.eyes);


        }
        console.log(Person.name);
        console.log(Person.eyes);
        console.log(Person.arms);
        Person.walk();

在这里插入图片描述


引用类型

Object:

Object 是内置的构造函数,用于创建普通对象。

创建对象的三种方法:

        // 字面量创建对象
        let people = {
            name: 'zs',
            age: 18,
        }

        // 对象语法简写
        let name = '小明';
        let user = {
            name,
            walk() {
                console.log('刷刷微信步数');
            }
        }

        // 构造函数创建对象
        let student = new Object({
            name: '小红',
            age: 12
        })

        console.log(people instanceof Object);
        console.log(user instanceof Object);
        console.log(student instanceof Object);

在这里插入图片描述
普通对象赋值后,无论修改哪个变量另一个对象的数据值也会相当发生改变。

  1. 推荐使用字面量方式声明对象,而不是 Object 构造函数

  2. Object.assign 静态方法创建新的对象

  3. Object.keys 静态方法获取对象中所有属性

  4. Object.values 表态方法获取对象中所有属性值

堆与栈的区别:

  1. 堆和栈是内存中的数据存储空间
  2. 简单类型的数据保存在内存的栈空间中
  3. 引用类型的数据保存在内存的堆空间中,栈内存中存取的是引用类型的地址(房间号)

.

RegExp:

RegExp 内置的构造函数,用于创建正则表达式。

使用构造函数创建正则:

let reg = new RegExp('\d', 'i');
reg.exec('1')

字面量创建正则小案例:

        // 把字符串内的r全部替换为荣
        let str = 'ferqwfwefwerewdewfdasxwadwefawszcew';
        let reg = /r/gi;
        // g为global  全局,全部
        // i为ignore  忽略大小写

        // 根据正则替换
        let newStr = str.replace(reg, '荣')
        console.log(newStr);

在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值