6.25 js笔记补充

闭包的补充知识

闭包是指有权访问另一个函数作用域中的变量的函数

function f1(){
   
        var n = 123;
        function f2(){
       //f2是一个闭包
            alert(n)
        }    
        return f2;
    }

js链式作用域:子对象会一级一级向上寻找所有父对象的变量,反之不行。
js中函数内部可以读取全局变量,函数外部不能读取函数内部的局部变量。

闭包:f2可以读取f1中的变量,只要把f2作为返回值,就可以在f1外读取f1内部变
原因:f1是f2的父函数,f2被赋给了一个全局变量,f2始终存在内存中,f2的存在依赖f1,因此f1也始终存在内存中,不会在调用结束后,被垃圾回收机制回收。

闭包概念

能够读取其他函数内部变量的函数。
或简单理解为定义在一个函数内部的函数,内部函数持有外部函数内变量的引用。

闭包用途

1、读取函数内部的变量
2、让这些变量的值始终保持在内存中。不会再f1调用后被自动清除。
3、方便调用上下文的局部变量。利于代码封装。

对象的可扩展性

Object.preventExtensions()
说明:

对象一旦设置不为不可扩展就不能转换为可扩展了
Object.preventExtensions只会影响对象本身的可扩展性,所以依然还是可以给对象原型添加属性。

        const log = console.log;
        var aa = {
   };
        Object.preventExtensions(aa);
        aa.x = 1;
        log(aa.x)

结果: undefined

检测对象是否是可扩展的

Object.isExtensible()


        
        const log = console.log;
        var aa = {
   };
        var bb = {
   };
        Object.preventExtensions
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值