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 (1/14)
0
Reputation
-
get/set и его использование в Javascript
denis_alekss replied to denis_alekss's question in JavaScript
Когда нужно его вообще использовать get/set? -
Решил понять смысл 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>
-
fetch(url) возвращает объект промис, response это объект промис, который мы создаем в then и через него получаем доступ в json() чтобы вытащить этот url и в дальнейшем вывести ссылку https://jsonplaceholder.typicode.com/todos через консоль?
-
Спасибо, хорошая ссылка с примерами. Я читал что первый параметр 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, он вытягивает эту ссылку или что?
-
Как мы можем вызвать функцию 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>
-
Скажите, а целесообразно переписать мой код с использованием асинхронных функций? Сейчас начал изучать асинхронные функции читать, скоро создам следующий пост если что будет не ясно, пока не совсем понимаю смысл написания 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) }
-
тренировочная 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 за каждой итерацией? Эта строка нужна чисто чтобы заполнить пустой массив, создав клон массива?
-
Вместо анонимной вы сделали запись короче стрелочной функцией.. 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>
-
При var i = 0 при проверке условия цикла тело цикла вообще выполняется? Или 5 раз проверяется условие но тело не выполняется? 5 раз как проверяется условие выводы почему не происходят?
-
Почему код срабатывает только тогда когда 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
-
Вот еще вариант один: <!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 вызвать саму себя?
-
Метод 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>
-
Не вызывается почему то конструктор, пишет что не определенный конструктор хотя я ему определяю список аргументов при вызове. <!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 для вызова конструктора?
-
Зачем нужен prototype в JavaScript? При создании любого объекта в JavaScript создается новый объект __proto__ в системе который ссылается на функцию(класс) с помощью которого этот объект создан. При объявлении функции или класса создается также объект с именем prototype. Он создается для того чтобы потомки функции-классы могли унаследовать его свойства или для того чтобы сделать чисто инициализацию конструктора, которая происходит после new когда объявляется любая функция или класс?
-
Элементов 12, а индекс максимальный 11. lastIndexOf(20, -2) ищет с 10 по 0 indexOf(20, -2) ищет с 10 по 12