为什么显示"函数getFullYear(){[Date.getFullYear的本机代码,arity = 0]}"而不是方法返回的值?

Wes*_*esR 4 javascript google-apps-script

在Google Apps脚本编辑器中,我有以下代码

  function t(){
    var d = new Date;
    Logger.log(d);
    var y = d.getFullYear;
    Logger.log(y);
    if (y == 2013) {
      Logger.log("yes");
    } else {
      Logger.log("No");
    }
  }
Run Code Online (Sandbox Code Playgroud)

查看日志时,我看到以下结果.

[13-06-23 19:53:52:863 PDT] Sun Jun 23 19:53:52 GMT-07:00 2013
[13-06-23 19:53:52:864 PDT] function getFullYear() { [native code for Date.getFullYear, arity=0] }

[13-06-23 19:53:52:864 PDT] No
Run Code Online (Sandbox Code Playgroud)

我以为我会看到一个整数或者一个字符串,它是getFullYear返回的值.

无论是什么导致我这个问题并不是这种方法独有的.

我相信这是非常基本的.

提前致谢.

mu *_*ort 10

这将存储对getFullYear函数的引用y:

var y = d.getFullYear;
Run Code Online (Sandbox Code Playgroud)

这将调用该getFullYear函数并将函数调用的结果存储在y:

var y = d.getFullYear();
// ------------------^^
Run Code Online (Sandbox Code Playgroud)

也许你很困惑,因为你可以创建带或不带括号的对象(假设你当然不需要传递任何参数):

var d1 = new Date;
var d2 = new Date();
Run Code Online (Sandbox Code Playgroud)

这两个都做同样的事情,但这只是new运营商的一个怪癖/特征.