Jump to content

denis_alekss

User
  • Posts

    35
  • Joined

  • Last visited

Information

  • Sex
    мужской
  • From
    Россия

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

denis_alekss's Achievements

Explorer

Explorer (1/14)

0

Reputation

  1. Когда нужно его вообще использовать get/set?
  2. Решил понять смысл get/set, написал небольшой код, правильно ли в нем используется метод get/set или нужно по-другому, если по-другому, напишите пож. как лучше в моем коде. <script> class Beverage{ constructor(options){ this.name = options.name; } returnName() {console.log(this.name)} } class Price extends Beverage { constructor(options){ super(options) this.price = options.price; this.bos = options.bos; } result() {console.log("Напиток " + this.name + " Цена" + this.price + "Директор - " + this.bos)} get Bos(){ {return result()} } set Bos(newBos){ const newbos = newBos.split(' '); this.bos = newbos[0]; this.bos = newbos[1] } } const bev = new Beverage({name: 'Coca-cola'}) bev.returnName() const price = new Price({name: 'Fanta',price: " - 200 евро ",bos: "Стивен"}) price.result() price.bos = "Майкл Джексон" price.result() </script>
  3. fetch(url) возвращает объект промис, response это объект промис, который мы создаем в then и через него получаем доступ в json() чтобы вытащить этот url и в дальнейшем вывести ссылку https://jsonplaceholder.typicode.com/todos через консоль?
  4. Спасибо, хорошая ссылка с примерами. Я читал что первый параметр resolve если успешно второй если не успешно rejected. Тут просто используется вроде объекты первого класса тема? Глянем на этот код: function (r) { setTimeout((function () { r() } ) Я попробовал простой пример который не относится вообще к асинхронным функциям, вот ниже написал, просто этот подход используется в том коде. ((n)=>n)(console.log(5)) Здесь делается похожее. n изначально было просто параметром, а потом превратилось в функцию с именем n. Перепишем обычным кодом: (function (n) {return n})(console.log(5)) Вызывается сразу функция n которую я даже не объявлял, я объявил просто параметр n в анонимной функции. Как кстати переписать эти 2 строчки чтобы вызвать отдельно а не сразу после объявления? Понял, вот так можно через ссылку. let d = (function (n) {return n}) console.log(d(5)) Или сокращенно: let d = (n=>n) console.log(d(5)) Вернемся к коду. Не совсем понял вот эту строку: return fetch(url) }).then(response => response.json()) Что происходит здесь? fetch это встроенный метод Обещаний в который мы передаем в качестве параметра url а затем в обещание через тот же подход через функцию response вызываем метод json, он вытягивает эту ссылку или что?
  5. Как мы можем вызвать функцию r не объявляя ее? Интересует вторая строка после конст. const delay = function(ms) { return new Promise(function (r) { setTimeout((function () { r() } ),ms) } ) Вначале создается анонимная функция с параметром r, а в теле этой анонимной функции вызывается функция r внутри функции setTimeout, , откуда взялся вызов функции r? Я ведь ее не объявлял, у меня только был параметр с именем r в анонимной, функции r нигде не объявлена как функция. Я про этот вызов r() в анонимной функции. <script> const delay = function(ms) { return new Promise(function (r){ setTimeout((function () {r()}),ms)}) } const url = 'https://jsonplaceholder.typicode.com/todos' function fetchTodos(){ console.log('Fetch todo started') return delay(2000).then(()=>{ return fetch(url) }).then(response => response.json()) } fetchTodos() .then(data =>{ console.log('Data', data)}) .catch(e=>console.error(e)) </script>
  6. Скажите, а целесообразно переписать мой код с использованием асинхронных функций? Сейчас начал изучать асинхронные функции читать, скоро создам следующий пост если что будет не ясно, пока не совсем понимаю смысл написания async function и можно ли ее применить к коду моему. const fib = [1,2,3,5,8,13] for(var i = 0; i < fib.length; i++){ (function(j){ setTimeout(function() { console.log(`fib[${j}] = ${fib[j]}`) },1500) })(i) }
  7. тренировочная let fib = [ 1, 2, 3, 5, 8, 13 ]; var xfib = []; let x = 0; for( i of fib ) { (( j ) => { void setTimeout(() => { xfib[ x++ ] = j; }, 1500); })( i ); } Стрелочная функция здесь анонимная с параметром j в который попадает значение i за каждой итерацией? Эта строка нужна чисто чтобы заполнить пустой массив, создав клон массива?
  8. Вместо анонимной вы сделали запись короче стрелочной функцией.. for...of вы перебрали элементы массива fib.. и записали все в новый пустой массив xfib, а void в этом коде какую роль играет? Вот так без void также работает: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <script> let fib = [ 1, 2, 3, 5, 8, 13 ]; var xfib = []; let x = 0; for( i of fib ) { (( s) => { setTimeout(() => { xfib[ x++ ] = s; console.log(xfib) }, 1500); })( i ); } </script> </body> </html>
  9. При var i = 0 при проверке условия цикла тело цикла вообще выполняется? Или 5 раз проверяется условие но тело не выполняется? 5 раз как проверяется условие выводы почему не происходят?
  10. Почему код срабатывает только тогда когда var i = 0; поменять на let i = 0;? Если оставить код как есть вывод: fib[6] = undefined Сам код <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <script> const fib = [1,2,3,5,8,13] for(var i = 0; i < fib.length; i++){ setTimeout(function() { console.log(`fib[${i}] = ${fib[i]}`) },1500) } </script> </body> </html> Вот такой код: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <script> const fib = [1,2,3,5,8,13] for(var i = 0; i < fib.length; i++){ (function(j){ setTimeout(function() { console.log(`fib[${i}] = ${fib[i]}`) },1500) })(i) } </script> </body> </html> выдаст также fib[6] = undefined
  11. Вот еще вариант один: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <script> let Person = function Pers(name, age, gender) { // Имя будет Pers this.name = name; this.age = age; this.gender = gender; }; Person.prototype.greet = function () { console.log("My name is " + this.name); } let Person2 = Person; Person2.prototype.goodbye = function () { console.log("Goodbye, " + this.name); } let Son = function (age, skils) { // Имя будет Son // Родительский конструктор вызывается до дочернего конструктора, // чтобы не было перезаписывания новых полей. Person.call(this, undefined, age, undefined); this.skils = skils || []; this.gender; } let Sunny = Son; Sunny.prototype = Object.create(Person.prototype); Sunny.prototype.constructor = Sunny; // Имя будет Son let a = new Person("Петя", 25, "female"); console.log(a); console.log(a.constructor.name); let b = new Son(18, ["рисует", "поет", "водит"]); console.log(b); console.log(b.name); </script> </body> </html> Задался еще таким вопросом. Я передал аргументы конструктору Person создав объект а, let a = new Person("Петя", 25, "female"); а как получить эти значения объекту b и вывести? Если написать так: console.log(b.name); получим undefined при выводе, а мне к примеру нужно унаследовать от родителя эти значения name, age, gender и вывести через потомка. Метод call дал возможность greet вызвать саму себя?
  12. Метод call дал возможность greet вызвать саму себя? очему во втором console.log не происходит вывод 18? Ведь я передал через конструктор аргумент 18. Здесь решил попробовать наследование. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Тест</title> </head> <body> <p id="result"></p> <script> let Person =function(name,age,gender){ this.name = name; this.age = age; this.gender = gender; // return this; }; Person.prototype.greet= function(){ console.log("My name is " + this.name); }; let Son = function(age,skils){ this.skils = skils || []; Person.apply(this,arguments) } Son.prototype = Object.create(Person.prototype); Son.prototype.constructor = Son; let a = new Person("Петя",25,"female"); let b = new Son(18,["рисует","поет","водит"]); console.log(a.age); console.log(b.age + b.skils); </script> </body> </html>
  13. Не вызывается почему то конструктор, пишет что не определенный конструктор хотя я ему определяю список аргументов при вызове. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Тест</title> </head> <body> <p id="result"></p> <script> let Person = { constructor:function(name,age,gender){ this.name = name; this.age = age; this.gender = gender; return this; }, greet: function(){ console.log("My name is " + this.name); } }; var tom = new Person.constructor("Вася",18,"female"); tom.greet(); </script> </body> </html> Почему я не могу использовать просто new для создания объекта, а обязательно нужно использовать Object.create.. Почему нельзя обойтись просто new для вызова конструктора?
  14. Зачем нужен prototype в JavaScript? При создании любого объекта в JavaScript создается новый объект __proto__ в системе который ссылается на функцию(класс) с помощью которого этот объект создан. При объявлении функции или класса создается также объект с именем prototype. Он создается для того чтобы потомки функции-классы могли унаследовать его свойства или для того чтобы сделать чисто инициализацию конструктора, которая происходит после new когда объявляется любая функция или класс?
  15. Элементов 12, а индекс максимальный 11. lastIndexOf(20, -2) ищет с 10 по 0 indexOf(20, -2) ищет с 10 по 12
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy