JavaScript 面向对象 栈内存 堆内存

74 阅读1分钟

栈内存 堆内存

        /* 引用数据类型 会开辟一个内存 (栈内存(内存地址),堆内存(内存的值))*/
        let obj1={name:'zhangsan',age:18}
        let obj2={}

        /* obj1的栈内存的地址给了obj2 */
        obj2=obj1

        /*obj2把obj1的堆内存的name值 改编成 lili */
        obj2.name='lili'

        /* 所以obj1和obj2的值都是一样的,都是obj1的堆内存的值*/
        console.log(obj1);
        console.log(obj2);
            
            
            

面向对象

        /* 构造函数的方式创建对象 */
    /* let obj =new Object();
    obj.name='TT'
    obj.age=20
    obj.kaiche=function(){
        document.write(`${obj.name}${obj.age}开车`);
    }
    obj.kaiche() */


    /* 字面量方式创建对象 */
    /* 对象定义的一种简写形式 */
    /*简化创建包含大量属性的对象的过程*/
    /*在为函数传递大量可选参数时,可考虑使用对象字面量*/

    let obj={
        'name':'TT',
        'age':'30',
        'kaiche':function(){
            document.write(`${this.name}${this.age}开车`);
        }
    }
    obj.kaiche()
    console.log(obj);
    
    

const

     <script>
    /* var let  */
    /* let不能重复定义  let具有块级作用域 (暂时性的死区)  let不能变量提升 */


    /* 定义常量 (不能给常量重复的赋值) */
    const url='http://'

    /* 定义对象  引用数据类型 会开辟一个堆内存,内存地址不会发生变化*/ 
    /* 地址不会被改变就不会报错 */     
    const obj={
        name:'zhangsan'
    }
    obj.name='lisi'
    obj.age=20

    /* 改变obj的内存地址会报错 */
    /* let obj2={}
    obj=obj2 */    
    console.log(obj);
</script>