zoukankan      html  css  js  c++  java
  • 关于对象引用的作用域

     

    var cat ={};
    cat.mouse = function(){var b="1111"};
    var dog = cat;
    console.log(dog);
    console.log(dog.mouse);
    dog.mouse = function(){var b="2222"};
    dog.hat="b";
    console.log(cat)

    Object {mousefunction}
    1. hat"b"
    2. mousefunction (){var b="2222"}
    3. __proto__Object

    function (){var b="1111"}
     
    Object {mousefunctionhat"b"}
    1. hat"b"
    2. mousefunction (){var b="2222"}
    3. __proto__Object

    对象赋值后,指向了同一个对象,及时改变的是第二个对象,第一个对象也跟着变。

                    var a="aa";
            var b = function (c, d){
                c="bb";
            }
            b(a);
            console.log(a);                            

    结果是aa

        var a=["aa"];
            var b = function (c, d){
                for(var i in c){
                   c[i] ="bb"
                
                }
            }
            b(a);
            console.log(a);

    结果是bb

    var a=["aa"];
            var b = function (c, d){
                c=["bb"]
            }
            b(a);
            console.log(a);

    结果是aa

    直接赋值的是值传递啊,需要对里面的修改,才改变原来的值。

    需要注意的是,如果函数用新的一个对象或者数组覆盖这个引用,那么这一修改在外部是不可见的。或者说,对象和数组是用传值的方式来传递的,只不过这个值是一个引用,而不是本身。

    字符串类型

    前面看了这么多类型,一直都没有介绍字符串类型,它不好直接分为基础类型和引用类型,因为字符串是一种任意的长度,看上去应该是引用类型,可是他却不是对象,所以也不可作为引用类型。

    类型
    复制
    传递
    比较
    数字 传值 传值 传值
    布尔 传值 传值 传值
    字符串 不可变 不可变 传值
    对象 传址 传址 传址

    http://www.cnblogs.com/joe2014/archive/2014/06/28/3813919.html

  • 相关阅读:
    学习python -- 第013天 类与对象
    学习python -- 第013天 bug
    学习python -- 第012天 函数(二)
    学习python -- 第012天 函数(一)
    学习python -- 第011天 字符串
    学习python -- 第010天 列表、元组、字典、集合总结
    排序_快速排序
    链表_逆置
    约瑟夫环-链表
    双栈_队列
  • 原文地址:https://www.cnblogs.com/danghuijian/p/3748483.html
Copyright © 2011-2022 走看看