美文网首页
【学习笔记】js中的this

【学习笔记】js中的this

作者: 简爱WindMan | 来源:发表于2020-03-12 11:25 被阅读0次

js存储方式

  • 基本数据类型,如:Undefined,Null,Boolean,Number,String 存储在栈中,因为这些数据小而且可预知。
var obj1={
a:1// a的属性被存到栈中[value:1,xxxx: ,yyyy:  ],1属于基本类型,直接存储到了value里
}
  • 引用数据类型,如:对象,数组,函数,这些类型大小不固定,所以存储在堆中,并把地址赋给某个变量的在栈中的value属性。
var obj2={
a:function(){
}// a的属性被存到栈中[value:函数在堆中的地址,xxxx: ,yyyy:  ],函数是引用类型,地址存储到了value里
}
  • 如果一个对象复制给另一个对象,修改其中一个会影响到另一个
var a={x:1}
var b=a;
b.x=2;
此时:a.x=2,不再等于1了

为什么这么存储

  • 栈区:在低地址,连续,可申请的区域有限
  • 堆区:在高地址,不连续,空闲的部分都可申请,比较大
  • 一般情况下,是从低往高地址读取,所以栈区先读,效率就高

运行环境

  • 由于js的存储方式决定,引用类型存在堆中,变量的属性存储在栈中的value里,所以当变量a赋给另一个变量b的时候,是把value里的地址给了b,当变量b运行的时候,b和a所处的环境不同,导致引用类型在运行的时候,会收到a或者b所在的环境的影响。
    var obj1 = {
      f1: function() { // 本函数被存到堆中,把地址给了f1
        return this.aaa
      },
      aaa: 1
    }

    var f = obj1.f1; // 此时的f的value里的地址和obj1.f1的value里的地址是一样的
    var aaa = 10;

    var obj2 = {
      f2: obj1.f1, // 此时的f2的value里的地址和obj1.f1的value里的地址是一样的
      aaa: 2
    }
// 函数只有一份,只是把地址给了三个变量f1、f2、f,他们对函数本体独立操作。
    console.log('f: ', f()) //  f调用函数的时候,f的环境里aaa=10;
    console.log('f1: ', obj1.f1()) //  f1调用函数的时候,f1的环境里aaa=1;
    console.log('f2: ', obj2.f2()) //  f2调用函数的时候,f2的环境里aaa=2;

相关文章

  • 【学习笔记】js中的this

    js存储方式 基本数据类型,如:Undefined,Null,Boolean,Number,String 存储在栈...

  • Javascirpt 语法(一)

    原生js学习笔记 内容中的链接是相关的学习链接 是学习过程中的记录在代码中 开发环境配置 -安装HBuilder:...

  • 初识vue.js

    vue.js官网教程学习笔记和学习摘要 起步 安装 一个简单的方法,直接把一个vue.js引入你的HTML页面中,...

  • js学习笔记

    js学习笔记 语法 后续补充笔记 join()方法var fruits = ["Banana", "Orange"...

  • JavaScript ☞ day1

    JavaScript基础学习笔记之JavaScript基础 HTML中添加JS代码、注释方法、输出方式 docum...

  • JavaScript基础,基础

    原javaScript学习笔记(一)js基础 一、简介 1、概述: JavaScript是目前web开发中不可缺少...

  • 原生js

    原生JS学习笔记1——基本数据类型和运算符 js的背景知识介绍,js的引入方式,js的变量及运算符 原生JS学习笔...

  • 用ES6、Nodejs语法,在vue中封装自己的JS模块

    今日学习笔记:封装一个设置缓存,获取缓存数据的JS模块 1、创建一个storage.js文件 2、在vue组件中,...

  • vue中使用pdf.js操作步骤

    [js学习笔记]PDF.js专题[https://blog.csdn.net/xiangcns/article/d...

  • JavaScript中的数据类型

    在此记录下学习JavaScript中数据类型的笔记。 一、特殊情况1、null 与 undefined, JS由于...

网友评论

      本文标题:【学习笔记】js中的this

      本文链接:https://www.haomeiwen.com/subject/jplyjhtx.html