【问题标题】:The javascript code explanation needed需要的javascript代码解释
【发布时间】:2014-02-28 10:09:03
【问题描述】:

这是一个函数:

function ShowHelloWorld(){
 this.x=4;
 var y=5;
 return 6;
}

声明 1.var res1 = ShowHelloWorld;

1.1 所以,res1 是 ShowHelloWorld 函数的副本。

1.2 res1() 得到 6。

1.3 无法从res1 获得值 4 和 5。

声明 2。var res2 = ShowHelloWorld();

2.1 res2 得到 6 作为函数的结果。

2.2 无法从res2 获得值 4 和 5。

声明 3.var res3 = new ShowHelloWorld();

3.1 这里res3是函数ShowHelloWorld()的一个实例。

3.2 res3.x 可以到达。 //res3.x==4

3.3 无法从res3 获得值 5 和 6。

声明 4.var res4 = new ShowHelloWorld; // 没有 ()

4.1 好像 res4 是一样的res3。为什么? (当我在浏览器控制台中测试它时,我发现它是一样的)。

4.2 这行是什么意思(如果没有错误就有意义,对吧?)

请回答我的问题或更正我的陈述,以防它们不正确或可能更好。

谢谢。

【问题讨论】:

  • 1.1 和 3.1 是错误的。 3.2 是错误的,因为一个错字。 4.2 不返回布尔值。

标签: javascript function class object instance


【解决方案1】:

1) res1 不是 ShowHelloWorld 的副本。它只是一个参考,一个别名。

2) res2 是调用ShowHelloWorld 的结果。其余的都是真的。

3) 有点真实。但是,如果您返回一个 object(6 是一个原始对象,而不是一个对象),那么 new 将返回该对象。看看这个sn-p:

function ShowHelloWorld(){
  this.x=4;
  var y=5;
  return {};
}

现在除了最终对象 {} 之外,什么都无法访问。因此,如果您想将函数视为一个类(即您想在其上使用new),那么最好省略return 语句。

4) new ShowHelloWorld; 只是 new ShowHelloWorld(); 的别名

【讨论】:

    【解决方案2】:

    由于 javascript 语法,语句 4 等效于语句 3。在'new'关键字之后应该是将用作构造函数的函数的名称。参数可以跳过。

    【讨论】:

      猜你喜欢
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 2020-02-20
      相关资源
      最近更新 更多