Самый эффективный способ программно определить, доступен ли веб-домен?

Учитывая ES6, я хотел бы добавить свою собственную ложку сахара и предложить еще один подход к итерации по свойствам объекта.

Поскольку простой объект JS не является iterable просто вне поля, мы не можем использовать цикл for..of для итерации по его контенту. Но никто не может остановить нас, чтобы сделать его итерируемым.

Давайте будем иметь book объект.

let book = {
  title: "Amazing book",
  author: "Me",
  pages: 3
}

book[Symbol.iterator] = function(){

  let properties = Object.keys(this); // returns an array with property names
  let counter = 0;
  let isDone = false;

  let next = () => {
    if(counter >= properties.length){
      isDone = true;
    }
    return { done: isDone, value: this[properties[counter++]] }
  }

  return { next };
}

Поскольку мы сделали это, мы можем использовать его следующим образом:

for(let pValue of book){
  console.log(pValue);
}
------------------------
Amazing book
Me
3

Или, если вы знаете мощность генераторов ES6 , вы наверняка можете сделать код намного короче.

book[Symbol.iterator] = function *(){

  let properties = Object.keys(this);
  for (let p of properties){
    yield this[p];
  }

}

Конечно, вы может применять такое поведение для всех объектов, делая Object итерабельным на уровне prototype.

Object.prototype[Symbol.iterator] = function() {...}

Кроме того, объекты, которые соответствуют итерабельному протоколу, могут использоваться с новой функцией ES2015 spread , поэтому мы можем считывать значения свойств объекта в виде массива.

let pValues = [...book];
console.log(pValues);
-------------------------
["Amazing book", "Me", 3]

Или вы можете использовать назначение destructuring :

let [title, , pages] = book; // notice that we can just skip unnecessary values
console.log(title);
console.log(pages);
------------------
Amazing book
3

Вы можете проверить JSFiddle со всеми приведенными выше мной кодами.

10
задан Cœur 11 October 2017 в 03:17
поделиться

6 ответов

nslookup поражает Ваш сервер DNS, это находится в Ваших параметрах настройки системы. Это может устареть или не иметь любую запись DNS. Я думал бы, что лучший способ будет состоять в том, чтобы иметь соединение TCP к порту whois.internic.net 43 (whois порт), передать имя, которое Вы хотите проверить, и затем необходимо получить сообщающий ответ. Если это не будет существовать, то Вы получите ответ как Никакое соответствие для "domainyourchecking.com"

8
ответ дан 3 December 2019 в 22:40
поделиться

В отношении № 1, нет. Нет никакого требования, которое зарегистрировалось, домены на самом деле имеют DNS.

9
ответ дан 3 December 2019 в 22:40
поделиться

Проблема с whois заключается в том, что нет последовательного ответа от разных tld.

Так что, если вы только смотрите для .com или какой-то другой конкретной информации, вы в порядке. Если вы начнете просматривать различные ccTld или другие gTld, вы можете обнаружить в своей логике множество специальных регистров, пытающихся выяснить, что означает «доступный» в данных, возвращаемых командой whois.

Whois всегда возвращает успех оболочке. даже когда домен доступен. : (

2
ответ дан 3 December 2019 в 22:40
поделиться

Это даст Вам быстрое да/нет, но если Вы думаете, что это свободно, и Вы хотите это, пытаетесь зарегистрировать его, можно найти, что это уже взято.

-2
ответ дан 3 December 2019 в 22:40
поделиться

Существуют слухи, что некоторые веб-сайты там, которые позволяют Вам искать домены, являются на самом деле передними сторонами для доменных спекулянтов, которые скупят домен, как только Вы ищете его и затем пытаетесь продать его для Вас. Я никогда не встречался с таким жульничеством, но Вы могли бы хотеть попробовать несколько поисков домена мусора на новом сайте перед поиском Вашего доменного имени мечты.

1
ответ дан 3 December 2019 в 22:40
поделиться

система ("whois $domainname");

-3
ответ дан 3 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: