1-js 组成?
1、ECMAScript(JavaScript语法 )
2、DOM页面文档对象模型
3、BOM 浏览器对象模型
2-js 中有哪些数据类型?
Undefined、Null、Boolean、Number和String。
Object本质是一组无序的名值对组成的。
undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的
3-typeof 和 instanceof 的区别
1、typeof返回结果是该类型的字符串形式表示(number、string、undefined、boolean、function、object)
注意:
typeof对于原始类型来说,除了null都可以显示正确类型
typeof对于对象来说,除了函数都会显示object
2、instanceof是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型。
3、typeof能够检测出了null之外的原型类型(String、Number、Boolean、Undefined),对于对象类型能判断出function、其他的都为Object
4、Array.isArray()判断一个值是否为数组
5、如果需要判断一个值是否为null,最直接就是与null比较
无论是typeof还是instanceof都不能准确判断出正确的类型。
4-怎么判断两个对象想等
1):通过JSON.stringify(obj)
来判断两个对象转后的字符串是否相等
优点:用法简单,对于顺序相同的两个对象可以快速进行比较得到结果
缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会比较出错
2):getOwnPropertyNames
该方法可以将Object对象的第一层key获取到并返回一个由第一层key组成的数组。
优点:相对方法一进行了优化,可以应对不同顺序的Object进行比较,不用担心顺序不同而对比出错
缺点:从方法中可以看到只能获取到第一层的key组成的数组,当对象是复合对象时无法进行多层对象的比较
5-js 中函数有哪些定义方式?
1:普通函数
函数表达式 let a= function(){}
函数声明 let function a(){}
匿名函数 function(){}
2:箭头函数
参数和函数体不同,*的去掉小括号和大括号。
箭头函数中,不需要写function。
3:对象中的函数
{
a:function(){}
}
6-js 中函数有哪些调用形式?
1.以函数形式调用
function fun(){ alert("hello world"); }
fun();
2.函数作为对象方法调用
var myObject = { firstName:"John", lastName: "Doe", fullName: function () { return this.firstName + " " + this.lastName; } } myObject.fullName();
3.使用构造函数调用函数
function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; }
var x = new myFunction("John","Doe"); x.firstName;
4.使用apply()和call()方法调用
apply()
function myFunction(a, b) { return a * b; } myFunction.call(myObject, 10, 2);
call()
function myFunction(a, b) { return a * b; } myArray = [10,2]; myFunction.apply(myObject, myArray);