面向对象

71 阅读1分钟
  • 1
<script>
    /* obj是Object new出来的一个实例化对象 */
    // let obj = new Object()
    // obj.name = 'taotao'
    // obj.age = 30
    // obj.kaiche = function (){
    //     document.write( `${obj.name}--年纪${obj.age} 会开车` );
    // }
    // obj.kaiche();

    let obj = {
        "name":"taotao",
        "age":30,
        "kaiche":function (){
            console.log('this',this);
            document.write( `${this.name}--年纪${this.age} 会开车` );
        }
    }
    /* this是谁调用就是谁的  */
    obj.kaiche()
    console.log(obj);
    /* 对象字面量 */
    /* 对象定义的一种简写形式 */
    /* 简化创建包含大量属性的对象的过程 */
    /* 在为函数传递大量可选参数时,可考虑使用对象字面量 */
</script>
  • 栈内存和堆内存

`

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

    /* obj2 把obj1的堆内存的name值 由zhangsan 改成了 lili */
    obj2.name="lili"

    /* 所以 obj1 和 obj2 的值 都是一样的 其实都是obj1的堆内存的值 */
    console.log('obj1',obj1);
    console.log('obj2',obj2);
</script>
  • const

`

<script>
     var let 
     
        let不能重复声明
        let具有块级作用域(暂时性的死区) 
        let不能变量提升 
    */
    /* 定义常量的 不能给常量重复的赋值 */
    // const url = 'http://timemeetyou.com:8889/api/private/v1/';
    /* url = 'http://www.baidu.com' */ /* 会报错 */

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

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