V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xi_lin
V2EX  ›  分享发现

才意识到 JS 的 function 是个对象

  •  
  •   xi_lin · 2016-08-24 22:57:00 +08:00 · 2155 次点击
    这是一个创建于 3015 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前一直只当成是 primitive value 了
    其实是个对象,可以当做{}来使用的特殊的函数对象

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function
    11 条回复    2016-08-26 12:09:38 +08:00
    FreeDog
        1
    FreeDog  
       2016-08-25 00:19:42 +08:00
    Python 、 Java 中 Function 属于 First-class object ,即 First-class function ( https://en.wikipedia.org/wiki/First-class_function)
    FreeDog
        2
    FreeDog  
       2016-08-25 00:19:54 +08:00
    @FreeDog JavaScript 。。。打错了
    hronro
        3
    hronro  
       2016-08-25 00:27:07 +08:00
    JS 中万物皆对象的嘛。即使是数字、布尔值这种基本类型的数据,实际上在语言内部也会把这些基本类型的数据转换成对象之后再使用。
    xi_lin
        4
    xi_lin  
    OP
       2016-08-25 16:26:14 +08:00
    @FreeDog 嗯,知道是一等公民,没想到是个 object
    xi_lin
        5
    xi_lin  
    OP
       2016-08-25 16:29:13 +08:00
    @hronro 还是有点不一样。数字变量无法直接当成对象使用, function 却可以
    Fishdrowned
        6
    Fishdrowned  
       2016-08-25 18:28:36 +08:00
    @xi_lin 数字可以直接当对象使用,试一下:

    1..toPrecision(2);
    xi_lin
        7
    xi_lin  
    OP
       2016-08-25 22:06:57 +08:00
    @Fishdrowned
    ..是什么语法呢?
    我前面那个单对象使用说法不准确,想表达的其实是当 map 使用
    比如
    ```
    var a = function() {console.log('a')};
    a.test = 'abc';
    console.log(a.test); // abc

    var b = 1;
    b.test = 'abc';
    console.log(b.test); // undefined
    ```
    lxrmido
        8
    lxrmido  
       2016-08-26 08:51:59 +08:00
    @xi_lin
    1.表示 1.0
    因为数字后面跟随.表示小数点,所以要再加一个点,等同于:
    1.0.toPrecision(2);
    xi_lin
        9
    xi_lin  
    OP
       2016-08-26 10:29:39 +08:00
    @lxrmido 为啥浮点数可以直接用 toPrecision 而整数不行呢? toPrecision 不是 Number 的自带方法么?
    lxrmido
        10
    lxrmido  
       2016-08-26 12:02:22 +08:00
    @xi_lin
    整数不是不可以,而是根据 JS 的语法,解析器会把整数后接的.当做小数点。
    xi_lin
        11
    xi_lin  
    OP
       2016-08-26 12:09:38 +08:00
    @lxrmido 了解了,谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:29 · PVG 10:29 · LAX 18:29 · JFK 21:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.