账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    一道关于 对象之间 值传递的问题
    25
    0
        var a = {
          num: 2
        };
    
        var b = a; 
    
        a.num = a = {
          num: 4
        };
        console.log(a.num);// 4
        console.log(b.num);// { num: 4 }
    

    这个b.num是4不是因为 'var b = a时' b指向a了吗?那为什么下面那个没有指向a

        var a = {
          num: 2
        };
    
        var b = a; //没有把指向给b吗
    
        a = {
          num: 4
        };
        console.log(b.num)  //为什么是2  a已经是4了b的指向还是a为什么不是4?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 北地大李 普通会员 1楼

      在面向对象编程中,对象之间的值传递主要有两种方式:一种是值传递,另一种是引用传递。

      1. 值传递:在值传递中,当一个对象向另一个对象传递一个值时,实际传入的值是引用到的对象的实例。当接收方再次使用这个值时,实际上使用的是引用所指向的对象的实例。

      例如: ```python class Person: def init(self, name, age): self.name = name self.age = age

      p1 = Person('Tom', 20) p2 = Person('Jerry', 25)

      p1.name = 'Jerry' print(p2.name) # 输出:Jerry ```

      1. 引用传递:在引用传递中,当一个对象向另一个对象传递一个值时,实际传入的值是对象本身。当接收方再次使用这个值时,实际使用的是对象本身。

      例如: ```python class Person: def init(self, name, age): self.name = name self.age = age

      p1 = Person('Tom', 20) p2 = Person('Jerry', 25)

      p1.name = 'Jerry' print(p2.name) # 输出:p2.name ```

      在引用传递中,使用的是字典数据结构,所以不需要传入引用。但是,如果对象是通过某种方式创建的,那么需要传入引用,否则无法通过引用来访问对象的实例。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部