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

  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/danghuijian/p/3748483.html
Copyright © 2011-2022 走看看