JS-12-对象-封装 / 继承

私有属性注意点:

在给一个对象不存在的属性设置值的时候, 不会去原型对象中查找, 如果当前对象没有就会给当前对象新增一个不存在的属性
由于私有属性的本质就是一个局部变量, 并不是真正的属性, 所以如果通过 对象.xxx 的方式是找不到私有属性的, 所以会给当前对象新增一个不存在的属性;

2.操作的是公有属性


一、JavaScript-封装性
  1. 局部变量和局部函数:
    无论是ES6之前还是ES6, 只要定义一个函数就会开启一个新的作用域;
    只要在这个新的作用域中, 通过let/var定义的变量就是局部变量;
    只要在这个新的作用域中, 定义的函数就是局部函数;

  2. 什么是对象的私有变量和函数:
    默认情况下对象中的属性和方法都是公有的, 只要拿到对象就能操作对象的属性和方法;
    外界不能直接访问的变量和函数就是私有变量和私有函数;
    构造函数的本质也是一个函数, 所以也会开启一个新的作用域, 所以在构造函数中定义的变量和函数就是私有和函数;

3.什么是封装?
封装性就是隐藏实现细节,仅对外公开接口;

4.为什么要封装?
4.1不封装的缺点:当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对属性的管理权,别人可以任意的修改你的属性;
4.2封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改. 封装是面向对象设计本质(将变化隔离)。这样降低了数据被误用的可能 (提高安全性和灵活性);


二、属性方法分类

1.在JavaScript中属性和方法分类两类
1.1实例属性/实例方法
在企业开发中通过实例对象访问的属性, 我们就称之为实例属性;
在企业开发中通过实例对象调用的方法, 我们就称之为实例方法;
1.2静态属性/静态方法
在企业开发中通过构造函数访问的属性, 我们就称之为静态属性;
在企业开发中通过构造函数调用的方法, 我们就称之为静态方法;


JavaScript-继承方式:
在企业开发中如果构造函数和构造函数之间的关系是is a关系, 那么就可以使用继承来优化代码, 来减少代码的冗余度;


三、JavaScript-bind-call-apply
  1. this是什么?
    谁调用当前函数或者方法, this就是谁;

  2. 这三个方法的作用是什么?
    这三个方法都是用于修改函数或者方法中的this的;

    2.1.bind方法作用
    修改函数或者方法中的this为指定的对象, 并且会返回一个修改之后的新函数给我们;

  • 注意点: bind方法除了可以修改this以外, 还可以传递参数, 只不过参数必须写在this对象的后面;

    2.2.call方法作用
    修改函数或者方法中的this为指定的对象, 并且会立即调用修改之后的函数;

  • 注意点: call方法除了可以修改this以外, 还可以传递参数, 只不过参数必须写在this对象的后面;

    2.3.apply方法作用
    修改函数或者方法中的this为指定的对象, 并且会立即调用修改之后的函数;

  • 注意点: apply方法除了可以修改this以外, 还可以传递参数, 只不过参数必须通过数组的方式传递;

例:

let obj = {
            name: "zs"
        } 
        /*
        // function test(a, b) {
        //     console.log(a, b);
        //     console.log(this);
        // }
        // test(10, 20);
        // window.test();
        // let fn = test.bind(obj, 10, 20);
        // fn();

        // test.call(obj, 10, 20);

        // test.apply(obj, [10, 20]);
        */

  1. JS中继承的终极方法
    3.1在子类的构造函数中通过call借助父类的构造函数;
    3.2将子类的原型对象修改为父类的实例对象;

-End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值