1.JS的基本数据类型有哪些?引用数据类型有哪些?
基本数据类型:(1)number;(2)string;(3)boolean;(4)null;(5)undefined;(6)symbol(ES6新增)。
引用数据类型:(1)object;(2)function;(3)Array;(4)Map;(5)Set。
2.JS的typeof和instanceof的区别
typeof用来判断数据类型的,但是typeof在判断null、array、object以及函数实例(new + 函数)时,得到的都是object。
var a = [34,4,3,54],
b = 34,
c = 'adsfas',
d = function(){console.log('我是函数')},
e = true,
f = null,
g;
console.log(typeof(a));//object
console.log(typeof(b));//number
console.log(typeof(c));//string
console.log(typeof(d));//function
console.log(typeof(e));//boolean
console.log(typeof(f));//object
console.log(typeof(g));//undefined
instanceof是判断该对象是谁的实例。
instanceof是用来判断一个对象在其原型链中是否存在一个构造函数的prototype属性。
a instanceof b:判断a是否为b的实例,可以用于继承关系中
b是c的父对象,a是c的实例,a instanceof b 与 a instanceof c 结果均为true
对于所有的引用类型,均为Object的实例
3.JS的null和undefined的区别
null是一个空值,是一个空对象指针;undefined代表未被初始化,当一个变量声明的未被初始化就是undefined。
4.JS的原型对象prototype
每个函数都有prototype属性,prototype属性是一个指针,它指向这个函数的原型对象。而且每个该对象产生的实例对象(new 操作符创建)都可以共享该对象prototype属性上的所有属性和方法。
(例子是创建了一个person函数)person函数的原型对象会自动获得一个constructor属性,这个属性指向其prototype属性所在函数,即person。
5.怎么判断两个对象相等
(1)通过JSON.stringify(obj)来判断两个对象转换后的字符串是否相等(如果对象的属性顺序不一样,会导致判断失误)
(2)Object.getownPropertyNames()
1)用Object.getOwnPropertyNames拿到对象的所以键名数组
2)比对键名数组的长度是否相等
3)比对键名对应的键值是否相等
但是当对象有二级属性要进行递归。
6.get和post的区别
(1)get请求是获取数据的,post请求是提交数据的。
(2)get请求对数据长度有限制。
(3)get请求可以被缓存,post请求不能被缓存。
(4)post请求比get请求更安全。
(5)GET参数通过URL传递,POST放在Request body中。