zoukankan      html  css  js  c++  java
  • js继承与闭包(笔记)

    1、一切引用类型都是对象,对象是属性的集合;typeof null === 'object'(例外);

    2、对象都是通过函数创建来的,比如var obj = new Object();typeof Object === 'function'; 

    3、函数有隐藏属性prototype,对象有隐藏属性__proto__;

         Func.prototype.constructor === Func;

         func.__proto__ === Func.prototype;

    4、对象的__proto__属性都指向创建它的函数的prototype;

        Object.prototype.__proto === null;

        Object.__proto__ === Function.prototype;

        Function.__proto__ === Function.prototype;

        Function.prototype.__proto === Object.prototpe;

    5、instanceof 其实是一种继承关系,A instanceof B(沿着A的__proto__找,同时沿着B的prototype找,如果最终能找到同一个饮用,就true);

    6、访问一个对象的属性,如果自身没有,则沿着__proto__向上找,这就是原型链;

    7、var obj = {},arr = [];

         obj.toString === '[object Object]';

         arr.toString === '';  说明Array.prototype.toString方法被改了;

    8、处于活动状态的执行上下文只有一个;

         作用域是一个抽象的概念,其中没有变量,要通过作用域对应的执行上下文来获取变量的值,且不同的调用会产生不同的上下文;

         函数是在定义时就确定了函数体内部自由变量的作用域;

         除了全局作用域,只有函数是可以创建一个独立的作用域;

         要取一个变量的值,要到创建它的函数的那个作用域中取值,这就是所谓的静态作用域;

         在A作用域中使用的变量a,却没在A中声明,则称a是自由变量;

    9、this指向

    • 函数作为构造函数用,this指向new出来的对象;
    • 函数作为对象的一个属性被调用,this指向该对象;
    • 在call、apply中,this指向传入的对象;
    • 全局调用普通函数,this指向window;

    10、闭包特性:函数嵌套函数;函数内部可引用外部变量;变量不会被回收。

          闭包是指有权访问另一个函数作用域中的变量的函数,闭包缺点是容易内存泄露。

           垃圾回收原理:在js中,如果一个对象不再被引用,那么这个对象就会被GC回收; 如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。

  • 相关阅读:
    vue--todolist的实现
    vue--使用定时器的问题
    vue--动态路由和get传值
    vue--非父子组件之间的传值
    Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2
    Atitit 图像处理 公共模块 矩阵扫描器
    Atitit 文档资料管理同步解决方案
    Atitit 拦截数据库异常的处理最佳实践
    Atitit 数据处理查询 中的异常标准化草案 jpa jdbc hb  oql规范attilax总结
    Atitit oodbms的查询,面向对象的sql查询jpa jpql hql
  • 原文地址:https://www.cnblogs.com/colima/p/5882433.html
Copyright © 2011-2022 走看看