【问题标题】:How does a function's arguments get values when it is instantiated as an object?函数的参数在实例化为对象时如何获取值?
【发布时间】:2012-09-21 22:17:01
【问题描述】:

所以,这是我的功能:

function thisismyfunction(myvariable) {
  // I do stuff here
}

然后,如果我想运行它,我会假设类似于以下内容:

thisismyfunction('foo');

然后给出参数。但是如果是这样的呢:

var myobject = new thisismyfunction;

那论据怎么给定呢?

更新:似乎可以像这样实例化它:

var myobject = new thisismyfunction('foo');

但是还有其他方法可以传递值吗?

【问题讨论】:

    标签: javascript oop function arguments


    【解决方案1】:

    如果您使用new,那么只要您不传递参数,括号就是可选的。

    如果您需要参数(不是undefined),那么它们是必需的。

    var myobject = new thisismyconstructor('foo');
    

    重新跟进问题:

    好像可以这样实例化:

    当然。我就是这么说的。

    但是还有其他方法可以传递值吗?

    不需要其他方法。

    【讨论】:

    • 这是否意味着它隐式地创建了一个默认 ctor?我在考虑两个选项,它隐式传递 null 或创建一个默认 ctor。
    • 一个构造函数。它不会隐式传递null,所有未指定的参数都是undefined(无论是否使用new)。 new 只是让你省略 () 如果你没有传递任何参数。
    • @Quentin 虽然如果你错过了(),jslint 可能会抱怨它
    • @elclanrs — 是的,Douglas Crockford 认为这样做不是最佳实践(我同意这一点),但语言允许这样做。
    【解决方案2】:

    您实际上是在给出论点,而它恰好是“未定义的”。

    【讨论】:

    • 我的意思是:var myobject=new thisismyfunction 对应于 var myobject=new thisismyfunction(undefined)
    • 也很有用,如果有解释和演示会更好。
    猜你喜欢
    • 2016-02-13
    • 2018-12-29
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多