前端-入门之旅——JavaScript知识点整理

162 阅读2分钟

1,JS基础

1,JS的基本数据类型

  • number
  • string
  • boolean
  • undefined
  • null
  • symbol
  • bigInt

注:用typeof 判断数据类型 typeof(undefined)=>undefined; typeof(null)=>object undefined 声明了一个但未赋值 null 空对象

2,JS的引用数据类型

  • Array 数组(属于对象的一种)
    var arr1=new Array(3)长度为三的数组,每一项都是空;   
    var arr2=new Array(1,2,3)数组的初始化,1*3的数组;  
  • Object 对象
    var obj={}  
    var obj=new Object{}  
    var obj=new Object{
        {
            name:"zs"
        }
    }
  • 区分对象和数组的方法
1.obj.constructor-Object.prototype.toString.call(arr)
2.arr instanceof array  
3.数组有一个方法IsArraytypeof()对象和数组返回结果都是object

3,JS的基本数据类型和引用数据类型的区别

  • 基本数据类型中基本数据存储在栈(stack)中,是按值访问的,因为可以直接操作保存在变量中的实际值。

  • 引用数据类型是保存在堆(heap)中,不能直接访问堆内存中的位置和操作堆内存空间,只能操作对象在栈内存中的引用地址,当两个引用数据类型指向了同一个堆内存对象。obj1赋值给obj2,实际上这个堆内存对象在栈内存的引用地址复制了一份给了obj2,但是实际上他们共同指向了同一个堆内存对象,所以修改obj2其实就是修改堆中的地址,所以通过obj1访问也能访问的到。

4,基本数据类型的运算

5,异步加载

defer 先加载dom 同时加载JS,dom加载完成后执行;
async 先加载dom 同时加载JS,执行完JS,继续加载dom;

6,类

类的创建

function Person(name,age){
    this.name=name;
    this.age=age;
    thi.say=function(){
        console.log("hello")
    }
}

每构建一个实例化对象,类会自动创建类中含有的函数;

1.函数下有一个prototype属性,它的实质是一个指针,指向它的原型对象 Person.prototype=>{constructor: ƒ}
2.原型对象下的属性和方法,可以被每一个实例化对象所共享,不需要每次构建一个实例化对象,创建一次方法;
3.实例化对象下有一个属性constructor,指向它的构造函数(也就是这个类)a.constructor=>ƒ Person(name,age){}
4.实例化对象下有一个属性__proto__指向它的原型对象a.proto=>{constructor: ƒ}
5.原型链:当从一个对象那里调取属性和方法时,如果对象自身不带有该属性和方法,就会去自己关联的prototype那里去寻找,如果prototype没有,就会去prototype关联的前辈prototype那里去寻找,以此类推,直到prototype....prototype=undefined,object的prototype就是undefined,这就是所谓的原型链,【感觉就像其他语言中对于祖先类的继承】
6.继承:
1)Person.call(this)=>继承父类的属性
2)coder.prototype=newPerson()=>继承父类及父类原型链上的方法
3)coder.prototype.constructor=code=>将原型对象的构造函数指回coder