zoukankan      html  css  js  c++  java
  • 面向对象--理解面向对象须知;

    第一个问题:什么是作用域???

    第二个问题:作用域在什么情况下会形成???

    第三个问题:什么是变量提升及作用域链???

    第四个问题:“=”的 理解???

    第五个问题:object和json的区别???

    第六个问题:object对象的定义???

    首先我们要知道作用域是什么?作用域也是我们常说的栈内存,栈内存又是什么呢?js代码执行的环境就是栈内存;

    当然,还有一个堆内存,堆内存的作用是什么?存放代码块的空间,当函数代码执行或引用数据使用时,他们的代码块

    就存放在堆内存中,函数以字符串的形式存放;引用数据类型用键值对的形式存放。

    第二个问题:什么情况下会形成作用域???第一,浏览器天生就有一个作用域,全局作用域(window);第二:函数执行的

    的时候会形成一个私有的作用域。

    第三个问题:什么是变量提升及作用域链???变量提升也就是预解释,什么意思呢?就是在JS代码在执行之前,浏览器会

    给他一个全局作用域(window),在window下分为了两个模块,一个是内存模块,一个是执行模块,内存模块会找到所有带

    var和function的关键字提前进行变量声明,然后就会给每个变量分配一个内存地址,在执行模块开始执行时,如果遇到自己

    作用域下的变量就会通过内存地址去查找变量的存在,如果有就直接操作,没有就向他的上一级作用域内存模块查找,如果有直接

    操作,没有就继续向上查找,直到window。这种查找的方式叫做作用域链。

    第四个问题:“=”的 理解???

    关于“=”,他的意义不在于像数学中的=一样是1+1=2;他的运算方式是从右往左的赋值运算;提到运算,说明这并不是一个单纯的“=”。

    先说运算:我们可以声明一个变量并给他赋值,如何操作?var a=12;这句代码的意思是将12赋值给变量a;也就是说=后面的数据赋值

    给前面的变量;

    再说“=”后面的数据,=后面的数据类型不单单是数字这么简单,它分为两种数据类型;

    第一种:基本数据类型(number 、string、boolean、null、undefined);

    第二种:引用数据类型(array、function、.....)

    第一种数据类型是可以直接赋值的,可以直接把这些数据给前面的变量,但是第二种数据类型就没有这么单纯,我们拿数组举例,当变量

    =后面的数据类型是数组时,数组就会开辟一个堆内存,将数组的内容存在里面,浏览器会给这个堆内存一个内存地址,然后把这个内存地址

    赋值给=前面的变量。

    第五个问题:object和json的区别???

    首先,他们长得都一样,也就是书写方式都是键值对的形式存在的,object的属性名可以不加引号,json必须加的;其次object是前端的数据类型,

    json是数据库的数据类型。

    第六个问题:object对象的定义???

    关于对象的定义,其方式就是我们直接用字面量的方式定义,直接书写一个对象;还有类的实例;

    说到类的实例,也就是Object的子类(RegExp、Math、Array、String...)实例的一些子对象。

  • 相关阅读:
    协程与IO模型
    进程池与线程池
    GIL全局解释器锁
    线程编程
    进程编程
    基于UDP协议的socket
    异常处理
    jquery mobile外部js无法载入问题
    禁用或限制部分WebKit特性
    eval 返回变量值
  • 原文地址:https://www.cnblogs.com/qinlinkun/p/10255759.html
Copyright © 2011-2022 走看看