es6中的class

constructor() {

return new Date();

//return Object.create(null);

}

}

let p = new Point(); //返回为Date对象

console.log§;

Constructor与普通构造函数的区别: 类的构造函数,不使用new是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。

class Point {

constructor(x, y) {

this.x = x;

this.y = y;

}

toString() {

return ‘(’ + this.x + ', ’ + this.y + ‘)’;

}

}

let p = Point(); //TypeError: Class constructor Point cannot be invoked without ‘new’

注意:在javascript中,在定义类完毕之后,还可以再添加属性和方法。

  • 属性和方法添加到this上(实例对象上)

class Point {

constructor() { }

}

let p = new Point();

p.username = “huanhzhizhen”;

console.log(p.username)

let p2 = new Point();

console.log(p2.username); //undefined

在这里插入图片描述

注意:上代码中,只是给Point类的实例对象p添加了username属性,并不是给类添加一个属性,所以对于实例对象p2是没有username这个属性的!

3. 给类添加属性或是方法

给类添加属性或是方法有两者凡是,一时通过原型的方法,二是直接通过类.属性的方式。

  • 通过原型的方式添加的属性和方法,类的全部实例公用

  • 后者添加的属于类的静态属性,只能通过类访问到

3.1 方式1 通过原型prototype

class Point {

constructor() { }

}

Point.prototype.username = “zhuangzhizhen”;

let p1 = new Point();

console.log(‘p1.username-----’, p1.username)

let p2 = new Point();

console.log(‘p2.username-----’, p2.username)

在这里插入图片描述

上面代码中,使用 Point.prototype方式,给类添加属性。 这样,类的所有对象(p1、p2)就都有username属性了。

在javascript中,每个类都会有一个prototypr,它就是类的原型,类的所有实例共享一个原型,若类的实例想访问该类的原型,可以使用proto指针(这里跟ES5中定义的后遭函数的实例概念相似0

3.2 通过类.属性名的方式

本文已被开源项目:【一线大厂面试真题解析+核心总结学习笔记+最新全套讲解视频+实战项目源码讲义】收录

上面代码中,直接使用 Point.username 方式给类添加一个属性,此种方式只是添加了一个静态属性,访问时,只能通过类名才能访问。

4. 类的继承

class是新es6中的语法,其实就是构造函数的另一种新写法(可叫做语法糖)

1.在定义一个类时,需要在内部加上constructor()

如下:

在这里插入图片描述

2.类,故名思意,类似于java语言,可以通过extends关键字来继承

当某一类要继承另一个类时要注意,一定要在constructor中的this使用之间加上super表示继承了这个类的构造方法中的变量、属性、方法,如下:

JavaScript

  • js的基本类型有哪些?引用类型有哪些?null和undefined的区别。

  • 如何判断一个变量是Array类型?如何判断一个变量是Number类型?(都不止一种)

  • Object是引用类型嘛?引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?

  • JS常见的dom操作api

  • 解释一下事件冒泡和事件捕获

  • 事件委托(手写例子),事件冒泡和捕获,如何阻止冒泡?如何组织默认事件?

  • 对闭包的理解?什么时候构成闭包?闭包的实现方法?闭包的优缺点?

  • this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?

  • call,apply,bind

  • 显示原型和隐式原型,手绘原型链,原型链是什么?为什么要有原型链

  • 创建对象的多种方式

  • 实现继承的多种方式和优缺点

  • new 一个对象具体做了什么

  • 手写Ajax,XMLHttpRequest

  • 变量提升

  • 举例说明一个匿名函数的典型用例

  • 指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?

  • attribute和property的区别

  • document load和document DOMContentLoaded两个事件的区别

  • JS代码调试

  • 开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值