V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
cc7756789
V2EX  ›  JavaScript

var instance = new func; 和 new func()有区别吗?

  •  
  •   cc7756789 · 2015-07-04 17:19:24 +08:00 · 2921 次点击
    这是一个创建于 3459 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ```javascript
    function Bird(){
    this.name = 'asaa';
    this.say = function (){
    return (this.name + 'hi!')
    }
    }

    var bob = new Bird;
    var bob2 = new Bird();
    bob.name;
    bob2.name;
    ```

    结果相同,但是加括号和不加有区别吗。如果是某些语言,加括号才能实例化。
    11 条回复    2015-07-05 06:48:47 +08:00
    Wenwei
        1
    Wenwei  
       2015-07-04 17:29:03 +08:00
    javascript,在构造函数无需参数的情况下,是无区别的。如果需要参数,就需要括号。一般情况下,加上括号保证代码风格统一。
    yimity
        2
    yimity  
       2015-07-04 20:06:27 +08:00 via iPad
    你的标题和内容不符嘛。
    MineLucky
        3
    MineLucky  
       2015-07-04 20:17:58 +08:00
    同意1L
    otakustay
        4
    otakustay  
       2015-07-04 20:39:11 +08:00
    就上面的代码来说没区别,但有时候会有区别,比如

    var toString = new Number.toString; // TypeError
    var toString = new Number().toString; // [Function: toString]
    pH
        5
    pH  
       2015-07-04 20:44:05 +08:00
    这个都是访问对象里的name属性把?
    banri
        6
    banri  
       2015-07-04 22:07:43 +08:00
    有区别,带()表示的是函数的运行结果,不带()表示的是函数本身,这样理解就可以了

    参考一本很老但是对很多概念讲解很细致、易懂的书籍:JavaScript DOM高级程序设计
    ChiChou
        7
    ChiChou  
       2015-07-04 22:55:19 +08:00
    P.S. @otakustay 的代码第一行改成 (new Number).toString 就好了~
    sneezry
        8
    sneezry  
       2015-07-04 23:01:23 +08:00
    @banri 不过就楼主的问题来看这样说似乎并不恰当,new是创建一个实例,其实并不运行函数
    Biwood
        9
    Biwood  
       2015-07-04 23:46:29 +08:00
    @banri 用 new 操作时,不带 () 也会运行函数的,你可以试试。
    1楼是正解
    Jaylee
        10
    Jaylee  
       2015-07-04 23:46:56 +08:00
    @banri new 并不是运行函数
    banri
        11
    banri  
       2015-07-05 06:48:47 +08:00 via iPhone
    @sneezry
    @Biwood
    @Jaylee

    你们是对的…昨天没仔细看T_T
    我说的该是没有new的情况,这里不恰当
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5370 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:09 · PVG 16:09 · LAX 00:09 · JFK 03:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.