js高级——基础补充

js高级

1. 数据、变量和内存

  1. 基本概念

    每个变量都对应一块内存,变量名用来查找对应的内存,变量值是内存中保存的数据内存分类:栈,堆;**栈:**保存局部变量/全局变量 :保存对象 对象名在栈中数据特点:可传递;可运算; 内存中所有的操作都是针对数据;

  2. 数据,变量和内存的关系

    内存是用来存储数据的空间,不是永久;代码存储在硬盘,加载到内存空间运行,

  3. 引用对象

    两个引用对象指向同一个对象,一个引用对象改变了内部数据,其他变量指向的数据也会改变

    两个引用对象指向同一个对象,为其中一个对象重新赋值,另一个对象指向不变

    var a = {name: 'miao'}
    function fn(obj){//这样只是把a的值赋给obj,也就是obj指向a存储对象的地址
        obj = {name: 'yawen'}//这样obj指向了另一个对象的地址,但a的指向不变
    };
    fn(a);
    console.log(a.name);//这里打印出 miao  
    
  4. JS调用函数时传递对象,是值传递还是地址传递

    当变量指向数据时,引用函数传递的是数据;当变量指向对象时,引用函数传递的是对象地址(也是变量的值);或者可以理解为值传递和引用传递

  5. js如何管理内存

    1)内存生命周期。分配内存空间得到使用权,存储数据并反复重复操作,对象释放空间 obj=null,成为垃圾对象后由垃圾回收器回收;局部变量释放空间,函数开始执行时分配空间,执行结束后释放空间。垃圾对象是指没有引用的不可达对象,会被垃圾回收器回收

2. 对象

对象可以封装多个数据,包括属性和方法,方法是一种特别的属性。

var a = {
    name:'Tom',
    setname: function(name){
        this.name = name;
    }
}
//调用方法一
a.setname('Alice')//调用对象内的方法
a.name = 'Alice'//调用对象内的属性值
//调用方法二
a['setname']('Alice')
a['name'] = 'Alice'

只能用方法二:当属性名称中有特殊字符(’-’,’ ')时;变量名不确定时

var name = "Bob"
var age = "18"
var p = {}
p[name] = age  //当属性名或者属性值存储在变量中的时候,只能使用方法二

3. 函数

  1. 函数执行方法

    test(); //直接执行
    obj.test(); //变量调用
    new test(); //new方法
    test.call/apply(obj)//临时将test方法成为obj的方法进行调用
    
  2. 回调函数

    定义后不是直接被调用的函数。

    常见的回调函数:DOM事件回调函数;定时器回调函数;ajax请求;生命周期回调函数

4. IIFE

​ IIFE(immediately-Invoked Function Expression) 立即调用函数表达式,匿名函数。这种方式可以隐藏实现,且内部变量不会污染全局空间。windows. ( ) 会 定 义 一 个 名 为 ()会定义一个名为 ()的函数,函数调用后返回一个对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值