js常考的面试题

js常考的面试题,第1张

什么是原型和原型链

原型: 函数都有prototype属性,这个属性的值是个对象,称之为原型

原型链: 对象都有__proto__属性,这个属性指向它的原型对象,原型对象也是对象,也有__proto__属性,指向原型对象的原型对象,这样一层一层形成的链式结构称为原型链.

call、apply和bind的区别
call和apply方法都可以调用函数,方法内的第一个参数可以修改this的指向
call方法可以有多个参数,除了第一个参数,其他参数作为实参传递给函数
apply方法最多有2个参数,第二个参数是个数组或伪数组,数组里面的每一项作为实参传递给函数
bind方法不能调用函数,它会创建一个副本函数,并且绑定新函数的this指向bind返回的新的函数
let、const和var的区别

1、var声明变量存在提升(提升当前作用域最顶端),let和const是不存在变量提升的情况
2、var没有块级作用,let和const存在块级作用域
3、var允许重复声明,let和const在同一作用域不允许重复声明
4、var和let声明变量可以修改,const是常量不能改变

js的运行机制是什么

js是单线程执行的,页面加载时,会自上而下执行主线程上的同步任务,当主线程代码执行完毕时,才开始执行在任务队列中的异步任务。具体如下
1.所有同步任务都在主线程上执行,形成一个执行栈。

2.主线程之外,还存在一个"任务队列(eventloop队列或者消息队列)"。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。

3.一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。哪些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。

4.主线程不断重复上面的第三步。

怎么理解面向对象

1、面向对象是一种软件开发的思想和面向过程是相对应的,就是把程序看作一个对象,将属性和方法封装其中,以提高代码的灵活性、复用性、可扩展性。

2、面向对象有三大特性:封装、继承、多态。
封装:把相关的信息(无论数据或方法)存储在对象中的能力
继承:由另一个类(或多个类)得来类的属性和方法的能力
多态:编写能以多种方法运行的函数或方法的能力

3、基本思想是使用对象,类,继承,封装等基本概念来 进行程序设计,易维护,易扩展。开发工作的重用性、继承性高,降低重复工作量。 缩短了开发周期

伪数组有哪些

1、参数 arguments,

2、DOM 对象列表(比如通过 document.getElementsByTags 得到的列
表)、childNodes也是伪数组

3、jQuery 对象(比如 $(“div”))

真数组和伪数组的区别

伪数组:
1、拥有length属性
2、不具有数组的方法
3、伪数组是一个Object,真数组是Array
4、伪数组的长度不可变,真数组的长度是可变的

伪数组怎么转真数组

1、let newArr = Array.protype.slice.call(伪数组)
2、let newArr = Array.from(伪数组),ES6的新语法
3、let newArr = […伪数组],使用扩展运算符,也是ES6的语法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1320998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存