共计 1801 个字符,预计需要花费 5 分钟才能阅读完成。
1.ES5 的继承和 ES6 的继承有什么区别?ES5 的继承时通过 prototype 或构造函数机制来实现。ES5 的继承实质上是先创建子类的实例对象,然后再将父类的方法添加到 this 上(Parent.apply(this))。ES6 的继承机制完全不同,实质上是先创建父类的实例对象 this(所以必须先调用父类的 super() 方法),然后再用子类的构造函数修改 this。具体的:ES6 通过 class 关键字定义类,里面有构造方法,类之间通过 extends 关键字实现继承。子类必须在 constructor 方法中调用 super 方法,否则新建实例报错。因为子类没有自己的 this 对象,而是继承了父类的 this 对象,然后对其进行加工。如果不调用 super 方法,子类得不到 this 对象。ps:super 关键字指代父类的实例,即父类的 this 对象。在子类构造函数中,调用 super 后,才可使用 this 关键字,否则报错。
2. 如何实现一个闭包?闭包的作用有哪些?在一个函数里面嵌套另一个函数,被嵌套的那个函数的作用域是一个闭包。作用:创建私有变量,减少全局变量,防止变量名污染。可以操作外部作用域的变量,变量不会被浏览器回收,保存变量的值。
3. 介绍一下 JS 有哪些内置对象。Object 是 JavaScript 中所有对象的父对象数据封装类对象:Object、Array、Boolean、Number、String 其他对象:Function、Argument、Math、Date、RegExp、Error
4.new 操作符具体干了什么呢?(1) 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。(2) 属性和方法被加入到 this 引用的对象中。(3) 新创建的对象由 this 所引用,并且最后隐式的返回 this。
5. 同步和异步的区别?同步的概念应该是来自于操作系统中关于同步的概念: 不同进程为协同完成某项工作而在先后次序上调整 (通过阻塞, 唤醒等方式)。同步强调的是顺序性,谁先谁后;异步则不存在这种顺序性。
同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求, 等请求完,页面刷新,新内容出现,用户看到新内容, 进行下一步操作。
异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。
6.null 和 undefined 的区别?null:null 表示空值,转为数值时为 0;undefined:undefined 表示 ” 缺少值 ”,就是此处应该有一个值,但是还没有定义。
• 变量被声明了,但没有赋值时,就等于 undefined。• 对象没有赋值的属性,该属性的值为 undefined。• 函数没有返回值时,默认返回 undefined。
7.JavaScript 原型,原型链 ? 有什么特点?JavaScript 原型:每创建一个函数,函数上都有一个属性为 prototype,它的值是一个对象。这个对象的作用在于当使用函数创建实例的时候,那么这些实例都会共享原型上的属性和方法。
原型链:在 JavaScript 中,每个对象都有一个指向它的原型(prototype)对象的内部链接(proto)。这个原型对象又有自己的原型,直到某个对象的原型为 null 为止(也就是不再有原型指向)。这种一级一级的链结构就称为原型链(prototype chain)。当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止; 到查找到达原型链的顶部(Object.prototype),仍然没有找到指定的属性,就会返回 undefined
8. 如何获取一个大于等于 0 且小于等于 9 的随机整数?.
function randomNum(){
return Math.floor(Math.random()*10)
}
9. 想要去除一个字符串的第一个字符,有哪些方法可以实现.
str.slice(1)
str.substr(1)
str.substring(1)
str.replace(/./,”)
str.replace(str.charAt(0),”)
10.JavaScript 的组成 JavaScript 由以下三部分组成:
ECMAScript(核心):JavaScript 语言基础
DOM(文档对象模型):规定了访问 HTML 和 XML 的接口
BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法