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]"
明天继续============