关于TypeScript的引用类型

    * 基本数据类型
    * 引用数据类型

 /**
     * 赋值引用
     */
    public copyCite() {
        let obj = { name: "1" };
        let copyObj = obj;

        obj.name = "2";

        console.log(copyObj.name);// 2

        //由于对象之间的赋值是复制了地址,因此地址复制过去之后,原对象的内容发生改变,复制的对象的内容也随之改变
        //稍有不慎就会引起对原对象的修改,污染了原本的数据





        //* 函数普通参数的传递/
        let num = 1;
        let str = "str";
        let bChange = false;
        this.useBaseFunction(num, str, bChange);
        console.log(num);//1
        console.log(str);//str
        console.log(bChange);//false
        //* 函数普通参数的传递/



        // 函数引用参数的传递///
        let objUseSpecail = { name: "spe" };
        let list = [1, 2, 3, 4];
        this.useSpecialFunction(objUseSpecail, list);
        console.log(objUseSpecail.name);//change
        console.log(list.toString());//"1,2,3,4,99"
        // 函数引用参数的传递///




        //函数引用参数的传递并重新赋值//
        let newObj = { name: "newObj" };
        this.newSpecialFunction(newObj);
        console.log(newObj.name);//change
        //函数引用参数的传递并重新赋值//
    }



    /**
     * 函数普通参数的传递
     * 
     */
    public useBaseFunction(num: number, str: string, bChange: boolean) {
        num = 10;
        str = "new";
        bChange = true;
        //基本类型参数传递的时候.复制栈帧的拷贝动作,外部变量和形参是两个不同的地址,只是复制了对应的值
    }

    /**
     * 函数引用参数的传递
     */
    public useSpecialFunction(obj, list: number[]) {
        obj.name = "change";
        list.push(99);
        //引用参数类型
        //引用类型参数传递的时候,由于本身存储的值是地址,因此传递的过程中把地址传递到函数中,引用类型的参数内容地址的内容发生改变
        //原有的值也因此被改变
    }

    /**
     * 函数引用参数的传递并重新赋值
     */
    public newSpecialFunction(obj) {
        obj.name = "change";
        obj = { name: "new" };
        //同理,引用类型参数传递的时候,对象的内容发生改变;而此时对象整个被新的对象赋值了,此时,新的对象的地址发生了改变,但是不影响此前原有地址内容的变化.
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值