zoukankan      html  css  js  c++  java
  • js 对象与函数的区别

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title></title>
     6 
     7     <script type="text/javascript">
     8         //第一种定义方式
     9         function fn1(){
    10             alert("fn1");   //fn1
    11         }
    12         //函数就是一个非常特殊的对象,是一个Function类的实例,其实在内存中存储的操作是通过一个键值对来存储的
    13         alert(typeof  fn1());  //function
    14 
    15         //由于函数是一个对象,所有可以通过如下方式定义
    16         //此时 fn2指向与fn1一样的函数,但是js与java不同点:
    17         // 1、java中key放置到堆栈中,函数放置到内存中,即此时fn1放置到堆栈中,函数value放置到内存中
    18         //    此时fn2 = fn1 ,堆栈中重新创建一个对象fn2,虽然此时fn2指向的函数仍然与fn1指向的函数相同,
    19         //   但是fn2 的函数已经与fn1 的函数已经不属于一块内存了,不像java指向的仍然还是一块内存区域
    20         var fn2 = fn1;
    21         fn2();  //fn1
    22         fn1 = function(){
    23             alert("fnn1");   
    24         }
    25         //函数虽然是一个对象,但是却和对象有区别,对象是通过引用的的指向完成对象的赋值操作,
    26         //而函数确实通过对象的拷贝来完成的
    27         //所以fn1虽然改变了,但是不会影响fn2
    28         fn2();  //fn1
    29         fn1();  //fnn1
    30 
    31         /**
    32          * 对于对象而言,是通过引用的指向来完成赋值的,此时修改o1或者o2会将两个只完成修改,与java中的方式相同
    33          * @type {Object}
    34          */
    35         var o1 = new Object();
    36         var o2 = o1;
    37         o2.name = "LEON";
    38         alert(o1.name);   //LEON
    39 
    40 
    41     </script>
    42 
    43 </head>
    44 <body>
    45 
    46 </body>
    47 </html>

  • 相关阅读:
    java怎么导入一个项目到eclipse
    JDK安装与环境变量配置(链接by网络)
    配置安装ecplise跑项目
    电脑缺少**.dll文件
    Microsoft-Office-Professional-Plus-2007
    win7如何恢复以前的ie版本
    maven安装及maven项目导入流程(网络链接)
    LoadRunner录制Web协议的脚本 (by网络)
    spring中jdbc.properties用法
    linux 安装 mysql
  • 原文地址:https://www.cnblogs.com/a757956132/p/5244494.html
Copyright © 2011-2022 走看看