Как я могу удалить все cookie с JavaScript? [дубликат]

Насколько я понимаю из требований к домашней работе, это проверяет ваше понимание JavaScript Closures .

Вот как можно использовать замыкания для решения:

Во-первых, данный базовый код уже возвращает объект результата. Возвращаемый объект результата предоставляет методы, которые можно вызвать извне: showType(), describe(), increase(), whatIs(). То, что вы пишете внутри этих функций, имеет доступ к области действия функции getShape().

Я создал переменную с именем segments и функцию с именем getName() внутри функции getShape(). Как видите, они могут быть доступны только внутри функции getShape().

Вот полный код ниже:

const getShape = function (countOfTypes = 3) {
  // Create a Shape Object
  let segments = countOfTypes;

  function getName() {
    if (segments < 3) {
      return null;
    } else if (segments === 3) {
      return "triangle";
    } else if (segments === 4) {
      return "quadrilateral";
    } // vice versa
  }

  const result = {
    showType() {
      // Return (Number) the current count of types
      return Number (segments);
    },
    describe() {
      // log 'The shape you created is a *** composed by * segments
      if (getName() === null) {
        console.log("A shape needs to have at least 3 segments, it will be set to 3, and set the type property value to 3");
      } else {
        console.log(`The shape you created is a ${getName()} composed by ${segments} segments`);
      }
    },
    increase() {
      // Increase the type property of a created shape by 1 and log the appropriate sentence in describe()
      segments++;
      result.describe();
    },
    whatIs() {
      // Open a new window that links to https://en.wikipedia.org/wiki/Polygon
      window.open("https://en.wikipedia.org/wiki/Polygon");
    }
  };
  return result;
};

//Test and use Cases

const square = getShape(3);
square.describe();
square.increase();

71
задан Kodos Johnson 18 May 2016 в 00:33
поделиться

2 ответа

На первый взгляд это смотрит хорошо - если Вы будете звонить eraseCookie() на каждом cookie, который читается от document.cookie, тогда все Ваши cookie закончатся.

Попытка это:

var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
  eraseCookie(cookies[i].split("=")[0]);

Все это со следующим протестом:

61
ответ дан blizzrdof77 24 November 2019 в 12:55
поделиться

Не существует 100% решения для удаления файлов cookie браузера.

Проблема в том, что файлы cookie однозначно идентифицируются не только по их ключевому «имени», но также по их «домену» и «пути».

Не зная «домен» и «путь» файла cookie, вы не можете надежно удалить его. Эта информация недоступна через JavaScript document.cookie . Он также недоступен через заголовок HTTP Cookie!

Однако, если вы знаете имя, путь и домен файла cookie, вы можете очистить его, установив пустой файл cookie с датой истечения срока действия в прошлом, например:

function clearCookie(name, domain, path){
    var domain = domain || document.domain;
    var path = path || "/";
    document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};
75
ответ дан 24 November 2019 в 12:55
поделиться
Другие вопросы по тегам:

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