Есть ли способ распечатать все методы объекта в javascript?
есть ли способ распечатать все методы объекта в javascript?
7 ответов:
обязательно:
function getMethods(obj) { var result = []; for (var id in obj) { try { if (typeof(obj[id]) == "function") { result.push(id + ": " + obj[id].toString()); } } catch (err) { result.push(id + ": inaccessible"); } } return result; }
используя это:
alert(getMethods(document).join("\n"));
вот сообщение на отражение в JS. Он должен делать то, что вы ищете.
Если вы просто хотите посмотреть, что находится внутри объекта, вы можете распечатать все ключи объекта. Некоторые из них могут быть переменными, другие - способы.
метод не очень точен, однако это очень быстро:
console.log(Object.keys(obj));
здесь
ES6
образец.// Get the Object's methods names: function getMethodsNames(obj = this) { return Object.keys(this) .filter((key) => typeof this[key] === 'function'); } // Get the Object's methods (functions): function getMethods(obj = this) { return Object.keys(this) .filter((key) => typeof this[key] === 'function') .map((key) => this[key]); }
obj = this
является параметром по умолчанию ES6, вы можете передать объект или он будет по умолчаниюthis
.
Object.keys
возвращает массивObject
собственные перечислимые свойства. Черезwindow
объект он вернется[..., 'localStorage', ...'location']
.
(param) => ...
это функция стрелки ES6, это стенография дляfunction(param) { return ... }
с неявным возвратом.
Array.filter
создает новый массив со всеми элементы, которые проходят тест (typeof this[key] === 'function'
).
Array.map
создает новый массив с результатами вызова предоставленной функции для каждого элемента в этом массиве (returnthis[key]
).
взгляните на этот код:-
function writeLn(s) { //your code to write a line to stdout WScript.Echo(s) } function Base() {} Base.prototype.methodA = function() {} Base.prototype.attribA = "hello" var derived = new Base() derived.methodB = function() {} derived.attribB = "world"; function getMethods(obj) { var retVal = {} for (var candidate in obj) { if (typeof(obj[candidate]) == "function") retVal[candidate] = {func: obj[candidate], inherited: !obj.hasOwnProperty(candidate)} } return retVal } var result = getMethods(derived) for (var name in result) { writeLn(name + " is " + (result[name].inherited ? "" : "not") + " inherited") }
функция getMethod возвращает набор методов вместе с тем, является ли метод тем, который был унаследован от прототипа.
обратите внимание, что если вы собираетесь использовать это на объекты, которые предоставляются из контекста, такие как browser/DOM объекта, то он не будет работать IE.
С здесь:
Пример 1: в этом примере записываются все свойства объекта "навигатор", а также их значения:
for (var myprop in navigator){ document.write(myprop+": "+navigator[myprop]+"<br>") }
просто замените "навигатор" на любой объект, который вас интересует, и вы должны быть хорошо идти.
как упоминал Энтони в разделе комментариев - Это возвращает все атрибуты, а не только методы, как заданный вопрос.
Упс! Это научит меня пытаться ответить на вопрос в a язык я не знаю. Тем не менее, я думаю, что код полезен - просто не то, что требовалось.
поскольку методы в JavaScript-это просто свойства, которые являются функциями, то for..in цикл будет перечислять их с исключением - он не будет перечислять встроенные методы. Насколько я знаю, нет никакого способа перечислить встроенные методы. И вы не можете объявить свои собственные методы или свойства для объекта, который не перечисляется таким образом.