day5

1-js 组成?

1、ECMAScript(JavaScript语法 )

2、DOM页面文档对象模型

3、BOM 浏览器对象模型

ECMAScript

ECMAScript 是由ECMA 国际( 原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网上应用广 泛,它往往被称为 JavaScript 或 JScript,但实际上后两者是 ECMAScript 语言的实现和扩展。

ECMAScript:ECMAScript 规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。

DOM ——文档对象模型

文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标记语言的标准编程接口。 通过 DOM 提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)。

BOM ——浏览器对象模型

BOM (Browser Object Model,简称BOM) 是指浏览器对象模型,它提供了独立于内容的、可以与浏览器窗口进行 互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等。

2-js 中有哪些数据类型?

js中有5种数据类型:Undefined、Null、Boolean、Number和String。
还有一种复杂的bai数据类型Object,Object本质是一组无序的名值对组成的。
Undefined类型只有一个值,即undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的,例子:

var
i;
alert(i == undefined);//true
var i;与var i =
undefined;这两句是等价的。
包含Undefined值的变量和未定义的变量是不一样的。
Null类型也只有一个值:null.null表示一个空对象的指针。
Boolean类型:只有两个字面量true和false。但是js中多有的变量都可以使用Boolean()函数转换成一个Boolean类型的值。
Number类型:整数和浮点数。NaN:Not
a Number。这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错。例如:1/0
返回的就是NaN。NaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。
针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。
String类型:略
typeof操作符:对一个变量进行推断变量的类型,可能返回以下字符串:
"undefined"
如果这个值,未定义或者为初始化
"boolean" 布尔值
"string" 字符串
"number" 数值
"object"
对象
"function" 函数
用法:typeof 95; 或者 typeof(95); 会返回"number".

3-typeof 和 instanceof 的区别

1、typeof返回结果是该类型的字符串形式表示【6】(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-怎么判断两个对象想等

方法一:通过JSON.stringify(obj)来判断两个对象转后的字符串是否相等

优点:用法简单,对于顺序相同的两个对象可以快速进行比较得到结果

缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会比较出错

方法二: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);
posted @ 2021-02-02 16:50  雨辰~  阅读(53)  评论(0)    收藏  举报