JS高级(1)

JavaScript的组成

  • DOM: Document Object Model 提供了一整套操作页面元素的API
  • BOM: Browser Object Model 提供了一整套操作浏览器相关内容的API
  • ECMAScript: js的语法规范以及标准!

    JavaScript中的数据类型

    基本数据类型

  1. string
  2. number
  3. boolean

复合数据类型

  1. Object
  2. function
  3. Array
  4. Date
  5. RegExp
  6. String
  7. Number
  8. Boolean
  9. Math

空类型

  1. null
  2. undefined

获取数据类型的方式

1
2
3
4
5
6
7
var res = typeof 数据;
//typeof关键字可以用来获取数据的数据类型,他的返回值表示数据的数据类型,返回值是一个字符串类型的值
//typeof关键字获取除了function以外所有的引用类型的数据的类型的时候,获取到的都是 object
//typeof null 获取到的是 object
//typeof undefined 获取到的是 undefined

全等和等于的区别

全等

即判断数据的数据类型是否一致,也判断值是否一致

等于

只判断值是否一样

引用类型和值类型参与运算的时候的规则

1
2
3
4
5
6
7
8
console.log([] == ![]);
//1. console.log([] == false);
//2. console.log([].valueOf() == false);
//3. console.log([].toString() == false);
//4. console.log("" == false);
console.log({} + 1);
console.log({} == !{});

当值类型和数据和引用类型的数据发生运算的时候,首先需要调用该引用类型数据的valueOf方法,获取返回之后,尝试进行运算,如果可以运算,则得出结果,如果不能运算,继续调用该引用类型数据的toString方法,获取返回值,参与运算!

in关键字的使用

for-in 用来遍历对象的属性

1
2
3
for(var k in obj){
console.log(k); //k 代表的就是对象的属性,这个k是字符串类型
}

属性名 in 对象 判断对象能否访问指定的属性

1
2
var obj = {name: "xyz"};
console.log("name" in obj);

delete关键字的使用

删除没有使用var声明的变量

1
delete 变量名;

删除对象的属性

1
2
delete 对象名.属性
delete 对象名[属性]

tip: 访问一个不存在的变量,会报错,xx is not defined
访问一个对象不存在的属性,不会报错,会返回undefined

逻辑中断

||中断

1
2
表达式1||表达式2
//如果表达式1为真,则返回表达式1,否则返回表达式2

&& 中断

1
2
表达式1&&表达式2
//如果表达式1为假,则返回表达式1,否则返回表达式2

break和continue

break 跳出整个循环,继续执行循环之后的代码

continue 跳出本次循环, 执行下次循环

异常处理语句

1
2
3
4
5
6
7
8
9
try{
//可能出现错误的代码
}catch(e){
//出错后的处理代码
//e 就出错的错误信息
}finally{
//无论是否出错都会执行的代码
//一般情况下放释放资源的代码
}

手动抛出异常

1
2
throw anything;
//throw可以手动抛出异常,可以抛出任何东西,throw出去的内容如果有trycatch语句,就会被catch捕获,catch中的e就是我们跑出去的异常信息

引用类型和值类型

值类型

存储的是数据本身的这种数据,就是值类型的数据

引用类型

存储的是数据的地址,数据单独存储,这种数据,就是引用类型的数据

值类型和引用类型的赋值特征

值类型

值类型赋值,会将当前变量存储的数据直接复制一份交给新的变量,此时两个变量内容相同,但是存储空间完全独立,互不影响

引用类型赋值, 会将当前变量存储的数据的地址复制一份,交给新的变量,两个变量指向同一个对象,修改其中一个,另外一个也受到影响

对象的动态特性

在对象创建完成之后,可以随时为对象新增成员(属性和方法)这种特性就是动态特性

面向对象的基本概念

面向过程

解决问题的思维方式, 将解决问题的关注点方法在了解决问题的每一个详细的步骤上!

面向对象

解决问题的思维方式, 将解决问题的关注点方法在了解决问题所需要的一系列的对象身上!

面向对象和面向过程的关系

面向对象其实就是对面向过程的封装

什么是对象

万物皆对象
js中,无序的键值对集合,就是对象!