JS面试题(一)

简介: JS面试题(一)

1. 如何判断一个对象是否属于某个类


使用 instanceof 即if(a instanceof Person) {alert(‘yes’)} 【in stæns]】


2. 对JSON的了解


一种轻量级的数据交换格式.


类似于xml。数据格式简单,易于读写,占用宽带小.


JSON的值是键值对的形式(key: value).


两个函数:


JSON.parse(str) // 解析JSON字符串变成js值或对象
JSON.stringify(obj) // 将一个js值(对象或者数组)转换为一个JSON字符串


3. JS中如何将页面重定向到另一个页面?


使用 window.location.replace(url)
window.location.replace(" https://www.onlineinterviewquestions.com/");


4.JS中的深拷贝与浅拷贝的区别?


在深拷贝中,新对象中的更改不会影响原始对象,


方法:JSON.parse(JSON.stringify(obj)),


弊端是:NaN, undefined,function这些会出现问题。


深拷贝新旧对象:指针指向不同的内存地址


而在浅拷贝中,新对象中的更改,原始对象中也会跟着改。


使用object.assign('原始对象','新对象') 进行浅拷贝


浅拷贝是复制另一个对象的内存地址


7. 解释一下什么是箭头函数?


在es6中有了箭头函数。


箭头函数不能用作构造函数,也不支持this,


arguments,super


8. encodeURI()


encodeURI() 函数可以对URL进行编码。
【它将url作为参数并返回编码的字符串】
var uri = "my profile.php?name=sammer";
var encoded_uri = encodeURI(uri);


8.0 decodeURI()


decodeURI()函数用于解码js中的URL。
var uri = "my profile.php?name=sammer";
var encoded_uri = encodeURI(uri);
decodeURI(encoded_uri);
encodeURI()编码 嗯往下按【编码】
decodeURI()解码


9.有哪些内置对象?


有6个


Function、Arguments、Math、Date、RegExp(正则表达式)、Error


10 DOM怎样添加、移除、移动、复制、创建和查找节点 ???


// 创建新节点
createDocumentFragment() //创建一个DOM片段
createElement() //创建一个具体的元素
createTextNode() //创建一个文本节点
// 添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore() //在已有的【子节点前】插入一个新的子节点


11.null和undefined的区别?


1. null表示一个尚未存在的对象。


1. undefined 定义了变量但是没有赋值。


2. ECMAScript 认为undefined是unll派生出来的。


他们的值是一样的,但是类型却是不一样的。


null==undefined (ok)  null === undefined (err)  


3 null转为数值时为0


 undefined转为数值时为NaN


NaN是一个非数字类型的number类型。


NaN==NaN(ok)  NaN===NaN(ok)


12. 什么情况下会出现 undefined。


(1)变量被声明了但没有赋值时,就等于undefined。


(2) 调用函数时,该提供的参数没有提供,该参数等于undefined。


(3)对象没有该属性的时候,该属性的值为 undefined。


(4)函数没有返回值时,默认返回undefined。


function fn2(){
  var per = 'xxxx';
  //无返回值
}
var b = fn2();
console.log(b); //出现 undefined

将函数赋值给一个变量,然后输出这个变量就是undefined  


13.什么是跨域?


协议, 域名, 端口号, 不同就是不同的域。


不同的域之间相互请求资源,就叫“跨域”。


ps:https与http也是不同的域


浏览器基于:“同源策略”


认为跨域请求是不安全的 所以拒绝访问。(浏览器把响应的数据拦截了)


14.解决跨域的方式


1)后端代理。


2)JSONP(利用script标签的src属性跨域 只是支持get方式 不支持post方式 且 需要后端支持)


3)设置响应头(cros) (后端) (推荐)

res.header("Access-Control-Allow-Origin", "*");  // 允许访问的域 * 代表左右
res.header("Access-Control-Allow-Headers", "需要携带的请求头"); // 允许携带的请求头

15.判断数组的方式有哪些 (5种)


1.通过原型链做判断


(目标源arr).__proto__ === Array.prototype;


2.通过ES6的Array.isArray()做判断


Array.isArrray(目标源arr); 【əˈreɪ]】


3.通过instanceof做判断


arr instanceof Array


4.通过Array.prototype.isPrototypeOf


Array.prototype.isPrototypeOf(arr) true


5.通过Object.prototype.toString.call()做判断


Object.prototype.toString.call(arr).slice(8,-1) === 'Array';


Object.prototype.toString.call(arr)==="[object Array]"


明天继续============



相关文章
|
24天前
|
JavaScript
分享经典面试题:JS数组去重的多种方法
分享经典面试题:JS数组去重的多种方法
|
29天前
|
JavaScript 前端开发
前端面试02(JS)
本文是前端面试系列的第二篇,主要涵盖了JavaScript的基础知识,包括JS的组成(ECMAScript、DOM、BOM)、内置对象(如String、Array、Math、Date等)、数组操作方法、数据类型检测方法(typeof、instanceof、constructor、Object.prototype.toString.call)、闭包的概念及其特点、前端内存泄漏的原因和类型、事件委托的优势、基本数据类型与引用数据类型的差异、原型链的工作原理以及JS实现继承的多种方式(原型链、构造函数、组合继承等)。文章结尾鼓励读者点赞和支持作者。
13 1
|
1月前
|
JavaScript 前端开发 程序员
web前端入门到实战:32道常见的js面试题(1),面试哪些
web前端入门到实战:32道常见的js面试题(1),面试哪些
|
1月前
|
前端开发 JavaScript
web前端JS高阶面试题,2024我的前端大厂面试之旅
web前端JS高阶面试题,2024我的前端大厂面试之旅
|
1月前
|
JavaScript 前端开发
web前端JS高阶面试题(1),高级开发工程师面试
web前端JS高阶面试题(1),高级开发工程师面试
|
1月前
|
JSON JavaScript 前端开发
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
|
1月前
|
JSON 前端开发 JavaScript
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
【JavaScript】面试手撕深拷贝(2),2024年最新nacos面试题及答案
|
1月前
|
前端开发 JavaScript
JavaScript新科技:PostCSS的安装和使用,2024年最新2024网易Web前端高级面试题总结
JavaScript新科技:PostCSS的安装和使用,2024年最新2024网易Web前端高级面试题总结
|
1月前
|
前端开发 JavaScript
JavaScript:this-关键字,2024中级前端开发面试解答
JavaScript:this-关键字,2024中级前端开发面试解答
|
1月前
|
JSON JavaScript 前端开发
【JavaScript】面试手撕深拷贝(1),面试前必看的一本书书籍是什么
【JavaScript】面试手撕深拷贝(1),面试前必看的一本书书籍是什么