Первый работает как положено:
var f1 = Object.getOwnPropertyNames(Function)
.forEach(function(element) {
console.log (typeof Function[element]);
}); // --> number, string, function
Второй выводит сообщение об ошибке:
var f2 = Object.getOwnPropertyNames(Function.prototype)
.forEach(function(element) {
console.log (typeof Function.prototype[element]);
});
TypeError: свойства "вызывающий", "вызываемый" и "аргументы" могут быть недоступны в строгом режиме.
Как это обойти?
Изменить: текущий обходной путь
var forbiddenOnStrictMode = ['caller', 'callee', 'arguments'];
var f2 = Object.getOwnPropertyNames(Function.prototype)
.forEach(function(element) {
if (forbiddenOnStrictMode.indexOf(element) == -1)
console.log (typeof Function.prototype[element]);
});
Можно ли сказать, что компилятор узла какое-то время игнорирует строгий режим?
Function.prototype[whatever] == 'function'
, то создайте заголовок в документе. Но, например, Function.prototype.caller недоступен в строгом режиме (= режим по умолчанию), и поэтому вы не можете получить доступ к существующему метод, потому что компилятор говорит НЕТ. - person Lonely   schedule 26.12.2017Object.getOwnPropertyNames(Function.prototype).forEach(function(element) {console.log (typeof Function.prototype[element]);})
Копировать+вставить+Ввод - person Lonely   schedule 26.12.2017"use strict";
и т. д., это стандартное поведение в самых последних версиях узлов, а также в браузерах. Теперь должен быть способ сказать узлу деактивировать строгий режим. - person Lonely   schedule 26.12.2017myFileName.js
, и вы запускаете его с помощьюnode myFileName.js
в своем терминале. - person Lonely   schedule 26.12.2017Function.prototype
, которое само по себе помечено как определенное в строгом режиме. - person jfriend00   schedule 26.12.2017