Насколько я понимаю из требований к домашней работе, это проверяет ваше понимание 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();
На первый взгляд это смотрит хорошо - если Вы будете звонить eraseCookie()
на каждом cookie, который читается от document.cookie
, тогда все Ваши cookie закончатся.
Попытка это:
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
eraseCookie(cookies[i].split("=")[0]);
Все это со следующим протестом:
Не существует 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;
};