Javascript知识回顾

js的组成

  • ECMAscript 核心 几乎没有兼容问题 担任解析器的角色 处理我们的逻辑代码
  • DOM 文档对象模型;文档指的就是网页;把网页变成一个JS可以操作的对象;给了JS可以操作页面元素的能力;document;有一些兼容性问题;
  • BOM 浏览器对象模型;给了JS操作浏览器的能力;window;有许多兼容性问题

js的引用

  • 外部文件 script标签 src属性

    <body>
        <script type="text/javascript" src="index.js"></script>
    </body> 
    
  • 内部 script标签区域

    <head>
        <script>
    
        </script>
    </head>
    
  • 注释方式 单行注释 多行注释

数据类型

基本类型(primitive)

1.Undefined
在使用var声明变量,但未对其加以初始化时,这个变量的类型就是undefined,且其默认初始化值为undefined
对未声明与初始化的变量,直接使用,那么这个变量的类型也是undefined,但是没有默认化初始值。
type test;//undefined 直接调用就会报错

2.Null
null类型的默认值是null,表示一个空对象指针,如果定义的变量准备在将来用于保存对象,那么就该将该变量初始化为null。

3.Boolean
该类型有两个值:true false
Boolean()方法 可以转换其他数据类型为布尔值

4.Number
整数 可以通过10进制 8进制 16进制表示
浮点数 该数值必须包含一个小数点,小数点后面必须有一位数字,如果小数点后只有0,自动转换成整数
浮点数占据的空间内存是内存的两倍,极大极小的数字会用e科学表示法。

NAN

  • 1.即非数值,是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数,未返回数值的情况。比如任何数值除以0,本是不符合规范的,js里,这样的操作返回NaN(但是实际上,只有0除以0时返回NaN,其他则无穷值)。
  • 2.NaN有两个不同寻常的特点:任何涉及NaN的操作都会返回NaN,NaN值与任何值都不相等,包括本身。
  • 3.isNaN()函数,这个函数可以判断,传递的参数是否“不是数值”,这里涉及数值转换的问题,例如“10”这个字符串就可以转换为10,但是“blue”这个字符串则无法转换为数字,所以isNaN(“blue”)==true

number() 可以 任何类型
parseInt() parseFloat() 只用于字符串类型

5.string

‘’ “” 单引号 双引号

基本类型的特点:

基本类型的特点是不可变的

复杂对象类型 Object 对象是属性和方法的集合

基本类型以外 就是引用类型

引用类型的特点

引用类型的值是可变的

变量 var (let const)

变量是一个杯子,它的类型是由它里面存放的东西决定的
可以通过typeof命名规范 一般推荐驼峰式命名

  • 语句
  • 运算符

() 括号 提升运算级别 优先运算

++ – 递增 递减 有前置和后置
前缀形式是先运算再赋值

后缀形式是先赋值在运算

! && || 逻辑非

*/%

+ 加法 拼接

<= >=

==判断相等 !=不相等

===全等 !==不全等

< >

?: 三元条件表达式

= += -=

流程控制语句:

  • if 最基本的条件判断语句

  • switch

  • 条件运算符 num1 > num2 ? num1 : num2

  • for、while、do-while

for-in 遍历对象

 for(var i in obj){
   console.log(i);
}

for in不要对数组循环,因为for in的顺序不是固定的

forEach 遍历数组

try catch

width

eval

作用域

this

this是Javascript语言的一个关键字。

它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用

function test(){
    this.x = 1;
}

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

  • 在全局作用域下面调用this,this指向window
  • 函数声明,匿名函数,函数表达式在全局中调用,this指向window
  • new关键词构造的对象,this指向创建该对象的函数
  • this当前的函数为对象属性的对象,this指向该对象
  1. 普通函数调用

    function test(){
        this.x = 1;
        console.log(this.x);
    }
    test(); // 1
    
  2. 作为对象方法的调用

    function test(){
        console.log(this.x);
    }
    var h = {};
    h.x = 1;
    h.t = test;
    h.t(); // 1
    
  3. 作为构造函数调用

    function test(){
        this.x = 1;
    }
    var h = new test();
    console.log(h.x); // 1
    
  4. apply() call()

    function x = 0;
    function test(){
        console.log(this.x);
    }
    var h = {};
    h.x = 1;
    h.t = test;
    h.t.apply(); // 0
    

- “构造函数”,其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上

用构造函数生成实例对象,有一个缺点,那就是无法共享属性和方法。

  • 继承

    对象之间的继承方法

  1. 构造函数绑定

    使用call或apply方法,将父对象的构造函数绑定在子对象上

任何一个prototype对象都有一个constructor属性,指向它的构造函数

每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性。