Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 07.02.2020, 00:50
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Malleys,
хватит тролить уже
function logTextNotes(el) {
    var n, walk = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null, false);
    while (n = walk.nextNode()) console.log(n);
}
logTextNotes(document.body);
Ответить с цитированием
  #32 (permalink)  
Старый 07.02.2020, 00:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Сообщение от Malleys
Обход всех текстовых узлов в DOM

<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">


</head>
<body>
<div>12345</div>
<script>
var Y=f=>(g=>x=>f(g(g))(x))(g=>x=>f(g(g))(x));

var processTextNodes = visit => Y(order => node => {
	if(node != null) node.childNodes.forEach(childNode =>
		childNode.nodeType === Node.TEXT_NODE ? visit(childNode) : order(childNode)
	)
});

var logTextNotes = processTextNodes(console.log);
logTextNotes(document.body);

/* https://developer.mozilla.org/ru/docs/Web/API/document/createTreeWalker */
function textNodesLog(el){
  const tree = document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false);
  while(tree.nextNode()) console.log(tree.currentNode);
}
textNodesLog(document.body)
  </script>
</body>
</html>
Ответить с цитированием
  #33 (permalink)  
Старый 07.02.2020, 01:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Poznakomlus,
Ответить с цитированием
  #34 (permalink)  
Старый 07.02.2020, 01:15
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

ИМХО, Malleys надо бы забанить. Говорить с ним точно нет никакого смысла.
Он либо дурачок, либо тролль, либо всё вместе взятое(Maxmaxmaximus, как твой фреймворк?).

P.S. Если кому интересно откуда взялся этот его бессмысленный Y-комбинатор - в рамках js он, как и прочие комбинаторы, просто математическая зарядка для ума, самоочевидно не предназначенная ни для какого практического применения.
__________________
29375, 35

Последний раз редактировалось Aetae, 07.02.2020 в 01:33.
Ответить с цитированием
  #35 (permalink)  
Старый 07.02.2020, 01:41
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Poznakomlus, рони, да у вас правильное решение, но это не равнозначная замена приведённому коду (в принципе представьте обход любого дерева)
function processTextNodes(node, visit) {
	if(node == null) return;

	const stack = [];
	stack.push(node);

	while(stack.length !== 0) {
		node = stack.pop();

		if(node.nodeType === Node.TEXT_NODE)
			visit(node);

		for(const childNode of node.childNodes) {
			stack.push(childNode);
		}
	}
}

processTextNodes(document, console.log);


Сообщение от Aetae
ИМХО, Malleys надо бы забанить
Всё это походит на сжигание людей в средние века. На тюремные заключения в современном РФ. Что именно я сделал не так?

Сообщение от Aetae
Говорить с ним точно нет никакого смысла.
Я вас ни к чему не принуждаю, я прочитал вашу точку зрения насчёт не стрелочных функции, считаю ОК. А вы разве что-то у меня спрашивали?

Сообщение от Aetae
Он либо дурачок, либо тролль, либо всё вместе взятое
Проблемы?
Ответить с цитированием
  #36 (permalink)  
Старый 07.02.2020, 01:57
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Aetae
Если кому интересно откуда взялся этот его бессмысленный Y-комбинатор - в рамках js он, как и прочие комбинаторы, просто математическая зарядка для ума, самоочевидно не предназначенная ни для какого практического применения.
Хватит вводить людей в заблуждение! Оно прекрасно работает как замена классической рекурсии, о которой вы упоминали.

Вы что-то не так поняли, я как бы не против классической рекурсии.

В этой теме я упомянул Y-комбинатор, как одно из возможных решении, поскольку автор темы не указал конкретный код с которым он работает (Может на самом деле можно обойтись без рекурсии вообще!)
Ответить с цитированием
  #37 (permalink)  
Старый 07.02.2020, 09:02
Аватар для drwhite
Интересующийся
Отправить личное сообщение для drwhite Посмотреть профиль Найти все сообщения от drwhite
 
Регистрация: 16.11.2015
Сообщений: 14

Сообщение от Malleys
Обход всех текстовых узлов в DOM
var Y=f=>(g=>x=>f(g(g))(x))(g=>x=>f(g(g))(x));
var processTextNodes = visit => Y(order => node => {
    if(node != null) node.childNodes.forEach(childNode =>
        childNode.nodeType === Node.TEXT_NODE ? visit(childNode) : order(childNode)
    )
});
var logTextNotes = processTextNodes(console.log);
logTextNotes(document.body);
var Y=f=>(g=>x=>f(g(g))(x))(g=>x=>f(g(g))(x));

За такую конструкцию в средние века точно бы на костер поставили =)

Сообщение от Poznakomlus
Код должен быть простым и понятым
Сообщение от Aetae
P.S. Если кому интересно откуда взялся этот его бессмысленный Y-комбинатор - в рамках js он, как и прочие комбинаторы, просто математическая зарядка для ума, самоочевидно не предназначенная ни для какого практического применения.
Вот здесь немного есть
И здесь
Ответить с цитированием
  #38 (permalink)  
Старый 07.02.2020, 09:29
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Y-комбинатор, конечно, прикольный, на собеседовании вполне можно закарать соискателя )

но он втыкает несколько дополнительных вызовов на каждой итерации, что и на скорости может сказаться, и дебажить веселее (нельзя просто взять и зайти внутрь рекурсивного вызова одним нажатием на F11). В общем, вернувшись в реальность, лично я не стал бы его на практике.

----
если у кого "мозги чешутся" повоевать с лямбдами, то велкам:
https://www.codewars.com/kata/57c4a3...65b/javascript
я пока не решил, там всё не так просто как кажется на первый взгляд )
ничего парсить не надо, на вход уже готовое дерево, только вычислить

Последний раз редактировалось Alexandroppolus, 07.02.2020 в 09:51.
Ответить с цитированием
  #39 (permalink)  
Старый 07.02.2020, 13:15
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Что-то пробежался по треду одним глазом, но так и не понял зачем это нужно.

Для рекурсии ничего не мешает сделать так:

const factorial = function f() {
    console.log(typeof f); // "function";
}

const factorial2 = factorial;

console.log(typeof factorial); // "function";
console.log(typeof factorial2); // "function";
console.log(typeof f); // "undefined";

factorial();
factorial2();



А для класса можно просто внутри использовать:

this.constructor



Например:

// ...
  cloneObject() {
     return new this.consructor(this.data);
  }

 // ...



Если Вам действительно нужно как-то получить имя функции, то это просто неправильный подход.
И не нужно смотреть на PHP. Все эти магические константы на PHP нужны для отладки, не более.
Ответить с цитированием
  #40 (permalink)  
Старый 12.02.2020, 22:48
Аватар для drwhite
Интересующийся
Отправить личное сообщение для drwhite Посмотреть профиль Найти все сообщения от drwhite
 
Регистрация: 16.11.2015
Сообщений: 14

Как правильно реализовать такую необходимость без Node:

class Account
{
    constructor(){...}
    async DB_createAccount()
    {
        let response = await fetch('lib/actionsAJAX.php?action='+{имя функции}+'&login='this.login);
        if (response.ok) 
        {
            .....
        }
        else
        {
	
        }
    }
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать имя функции Bercut Общие вопросы Javascript 27 25.12.2020 08:02
как правильно передвать имя radiobutton в функции boris2000 Элементы интерфейса 2 03.08.2010 21:16
Как получить имя файла и изменить его? nedosalivan Общие вопросы Javascript 5 29.03.2010 17:51
Как получить имя компа через JavaScript? Бурундук Общие вопросы Javascript 3 19.09.2009 16:44
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00