Недавно я узнал, что мы не можем получить доступ к inner function напрямую. Нам нужно сделать объект функции, чтобы сделать это. Однако в функции Date это выглядит иначе, поскольку мы можем получить доступ к внутренним функциям, таким как Date.now(). typeof Date возвращает "function", а не "Object".

Чего мне здесь не хватает?

0
dasfdsa 11 Янв 2017 в 09:25

3 ответа

Лучший ответ

Вы можете сделать такую вещь. Здесь функция b является функцией A. Typeof A вернет function. Но в Javascript функции также являются объектами. Таким образом, вы можете добавить properties и functions (methods) в function object itself.

function A(){
  
}

A.b = function(){
  console.log('B');
}

A.b();

Но если вы имеете в виду внутреннюю функцию к этому

function A(){
  
  function b(){
    console.log('b')  ;
  }
  
}

Вы не можете получить доступ к внутренней функции b за пределами A.

В одном случае для доступа к внутренней функции за пределами A вам необходимо назначить функцию this, которая называется method, затем создать объект A и использовать это method.

function A(){
      
  this.b = function (){
    console.log('b');
  };
      
}

let a = new A();
a.b();
5
Suren Srapyan 11 Янв 2017 в 06:48

Внутренняя функция в основном является функцией конструктора.

Например: < Код > function MyDate () { } MyDate.prototype.getDate = function () { console.log ( ' GetDate ') } MyDate.getDate () // getDate

-1
Cecil 11 Янв 2017 в 06:50

На самом деле, Date является конструктором объекта Date, поэтому здравый смысл заключается в том, что вы используете new Date(), чтобы получить доступ к этим «внутренним функциям», которые вы указали в своем вопросе:

type of Date // function
type of Date() // string, shorthand of new Date().toString()
type of new Date() // object
-1
Chu Ya'an Xiaonan 11 Янв 2017 в 06:32