Javascript知识点

ECMAScript6 怎么写class么

这个语法糖可以让有 OOP 基础的人更快上手 js 至少是一个官方的实现了

但对熟悉 js 的人来说 这个东西没啥大影响 一个 Object.creat() 搞定继承 比 class 简洁清晰的多

Javascript如何实现继承

1、原型链继承

弊端:

1)无法传参

2)继承的属性 无法在子类对象自身看到

3)获取引用时 会造成引用混乱的问题

2、借用构造函数继承

3、组合式继承

4、原型式继承

5、寄生式继承

6、寄生式组合继承

简述继承的作用

继承可以帮助我们将重复的代码和逻辑抽取到父类中 子类只需要直接继承过来使用即可

复用代码、缩短开发周期、降低开发费用

类的继承

使用 extends 关键字实现类的继承

super关键字用于访问和调用对象父类上的函数,可以调用父类的构造函数,也可以调用父类的普通函数

子类在构造函数中使用super,必须放到this前面(必须先调用父类的构造方法,在使用子类构造方法)

子类中可以定义与父类中重名的方法,此时子类中方法会遮蔽父类中的同名方法

原型继承的实现思路
Function Person(name,age){
    this.name = name;
    this.age = age;
}
Function Man(){

}
Man.prototype = new Person();

类中的成员分属

公有属性属于类的实例对象 通过 this 赋值给实例对象

类中方法属于类的原型对象 所有类的实例对象都可以使用

静态成员属于类本身 不属于任何实例对象

类的静态成员

静态成员是指在方法名或属性名前面加上 static 关键字 和普通方法不一样的是 static修饰的方法不

能在实例中访问,只能用类名直接访问

类的构造函数

构造函数也是类中的一个方法 只不过是一个特殊的方法

constructor()方法是类的构造函数(默认方法) 用于传递参数 返回实例对象 通过new命令生成对象

实例时 自动调用该方法 如果没有显示定义 类内部会自动创建一个构造函数

类的公有属性放到构造函数中进行初始化

class Student{

    constructor(username,age){

        this.username = username;

        this.age = age;

    }

}

能够改变this指向的方法

改变函数有 call、apply 和 bind 三个方法 区别在于

1.call 和 apply 在调用时 函数会执行 而 bind 在调用时会返回一个新的函数 需要进行手动调用

2.call 和apply 再使用基本类似 但是在传参的时候 call 能够从第2个参数开始接收一个参数序列

a,b,c.. apply方法在传参时需要将第二个参数设置为数组

this绑定的几种方式

1、默认绑定:全局环境中this默认绑定到window

2、隐式绑定:一般的 被对象所包含的函数调用时 也称为方法调用 this隐式绑定到该对象

3、显示绑定:通过call()、apply()、bind()方法把对象绑定到this上 叫做显式绑定

4、new绑定:如果函数或者方法调用之前带有关键字new 它就构成构造函数调用 对于this绑定来说 称为new绑定

1)构造函数通常不使用return关键字 它们通常初始化新对象 当构造函数的函数体执行完毕时 它会显式返回 在这种情况下 构造函数调用表达式的计算结果就是这个新对象的值

2)如果构造函数使用return语句但没有指定返回值 或者返回一个原始值 那么这时将忽略返回值 同时使用这个新对象作为调用结果

3)如果构造函数显式地使用return语句返回一个对象 那么调用表达式的值就是这个对象

简述什么是原型链

原型对象也有一个自己的原型对象([[Prototype]]) 层层向上直到一个对象的原型对象为 null根据定义 null 没有原型 并作为这个原型链中的最后一个环节

原型的理解

每一个函数都会被分配一个 prototype 属性,指向一个对象 此对象成为函数的原型对象 这个对象的所

有属性和方法都会被构造函数所拥有

默认情况下创建函数时 函数的原型上都会添加一个属性叫做constructor 这个constructor指向当前的函数对象

原型对象与函数对象之间的关系:你中有我 我中有你

原型、原型对象和对象的关系

每一个函数都有一个 prototype 属性,指向此函数的原型对象

每一个对象都有一个[[Prototype]]属性指向对应构造函数的原型对象

函数的原型对象有一个 constructor 属性指向对应的构造函数

属性描述分类

数据属性描述符和存取属性描述符

数据属性描述符特性

configurable:属性是否可以通过delete删除属性 是否可以修改它的特性 或者是否可以将它修改为存取属性 取值true和false

Enumerable:表示属性是否可以通过for-in或者Object.keys()返回该属性

Writable:表示是否可以修改属性的值

value:属性的value值 默认为undefined

数据存取属性描述符特性

Configurable:表示属性是否可以通过delete删除属性 是否可以修改它的特性 或者是否可以将它修改为存取属性.

Enumerable:表示属性是否可以通过for-in或者Object.keys()返回该属性

get:获取属性时会执行的函数 默认为undefined

set:设置属性时会执行的函数 默认为undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值