作家
登录

在Node.js中看JavaScript的引用

作者: 来源: 2017-04-11 09:02:23 阅读 我要评论

  •   obj.name = 'world'; // 根据该对象修改其上的属性 
  •  
  • test2(obj); 
  • console.log(obj); // { name'world' } // 修改成功② 
  • 我们发明与 C++ 不合,根据膳绫擎代码 ① 可知 JavaScript 中并没有传递一个引用,而是拷贝了一个新的变量,即值传递。根据 ② 可知拷贝的┞封个变量是一个可以拜访到对象属性的“引用”(与传统的 C++ 的引用不合,下文中提到的 JavaScript 的引用都是这种特其余引用)。这里须要总结一个绕口的结论:Javascript 中均是值传递,对象在传递的过程中是拷贝了一份新的引用。

    畏敲?解这个比较拗口的结论,让我们来看一段代码:

    1. var obj = { 
    2.   data: {} 
    3. }; 
    4.  
    5. // data 指向 obj.data 
    6. var data = obj.data; 
    7.  
    8. console.log(data === obj.data); // true-->data所操作的就是obj.data  
    9. data.name = 'Alan'
    10. data.test = function () { 
    11.   console.log('hi'
    12. };  
    13. // 经由过程data可以直接修改到data的值 
    14. console.log(obj) // { data: { name'Alan', test: [Function] } }  
    15. data = { 
    16.   name'Bob'
    17.   addfunction (a, b) { 
    18.     return a + b; 
    19.   } 
    20. };  
    21. // data是一个引用,直接赋值给它,只是让这个变量等于别的一个引用,并不会修改到obj本身 
    22. console.log(data); // { name'Bob'add: [Function] } 
    23. console.log(obj); // { data: { name'Alan', test: [Function] } }  
    24. obj.data = { 
    25.   name'Bob'
    26.   addfunction (a, b) { 
    27.     return a + b; 
    28.   } 
    29. };  
    30. // 而经由过程obj.data才能真正修改到data本身 
    31. console.log(obj); // { data: { name'Bob'add: [Function] } } 

    经由过程这个例子我们可以看到,data 固然像一个引用一样指向了 obj.data,并且经由过程 data 可以拜访到 obj.data 上的属性。然则因为 JavaScript 值传递的特点直接修改 data = http://developer.51cto.com/art/201704/xxx 并不会使得 obj.data = xxx。


      推荐阅读

      移动互联网人口红利逐渐消退 华为Hi-Star晨星计划一触即发

    【51CTO.com原创稿件】 据懂得,在2016岁尾,我国移动智能终端范围冲破13.7亿台,跟着人口红利减退,充分盘活、经营现有流量便成为了各行各业全新的机会与挑衅。经由过程近几年互联网手机>>>详细阅读


    本文标题:在Node.js中看JavaScript的引用

    地址:http://www.17bianji.com/lsqh/34702.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)