index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // Обязательная часть
  2. let handbag = {
  3. purse: 'red',
  4. trinket: 'metal',
  5. notebook: 'yellow',
  6. smartphone: 'huawei',
  7. removeProp: function(nameOfKey) {
  8. delete this[nameOfKey];
  9. },
  10. addProp: function(nextNameOfKey, valueOfKey) {
  11. this[nextNameOfKey] = valueOfKey;
  12. }
  13. }
  14. console.log(handbag)
  15. handbag.removeProp('notebook');
  16. handbag.addProp('passport', 'ukrainian')
  17. console.log(handbag)
  18. // Дополнительно
  19. let LibraryBook = function (title = 'Неизвестно', year = 'нет данных', author = 'нет данных') {
  20. let bookTitle = title
  21. let yearOfTheBook = year
  22. let bookAuthor = author
  23. let readerName = null
  24. let readerData = null
  25. function giveTheBook ( client, data = new Date() ) {
  26. readerName = client
  27. readerData = data
  28. }
  29. this.getBookInfo = function () {
  30. let text = (readerName !== null) ? 'нет в наличии' : 'есть в наличии'
  31. console.info ( `${bookAuthor}, ${bookTitle} (${yearOfTheBook}): ${text}` )
  32. }
  33. this.getTheBook = function ( client, data ) {
  34. if ( readerName === null ) {
  35. this.getBookInfo ()
  36. return null
  37. } else {
  38. giveTheBook ( client, data )
  39. return {
  40. title: bookTitle,
  41. year: yearOfTheBook,
  42. author: bookAuthor
  43. }
  44. }
  45. }
  46. this.returnBook = function () {
  47. readerName = null
  48. readerData = null
  49. }
  50. }
  51. let books = []
  52. books [0] = new LibraryBook ('Психбольница в руках пациентов', '2009', 'Алан Купер')
  53. books [1] = new LibraryBook ('Не заставляйте меня думать', '2000', 'Стив Круг')
  54. books [3] = new LibraryBook ('Чего хотят пользователи и как им это дать', '2017', 'Джейми Леви')
  55. books [0].getBookInfo()
  56. books [0].getTheBook( 'Ольга Пушкарь', new Date ())
  57. books [1].getBookInfo()
  58. books [0].returnBook()
  59. books [3].getBookInfo()
  60. console.log( books )
  61. // Дополнительно
  62. function CreateExemplar() {
  63. CreateExemplar.prototype.addProperty = function (nameProperty, valueProperty) {
  64. this[nameProperty] = valueProperty;
  65. }
  66. }
  67. let food = new CreateExemplar()
  68. food.addProperty('fruit', 'apricot')
  69. console.log(food)
  70. // hw5
  71. // Обязательное
  72. function sampleFunc_ () {
  73. console.log(`${arguments.callee.name}: ${arguments[0]} | ${arguments[1]}`)
  74. }
  75. function modificator_ (func) {
  76. return func.bind(null, 'test', 'sample')
  77. }
  78. testFunc = modificator_(sampleFunc_)
  79. testFunc()
  80. // Дополнительно
  81. function sampleFunc () {
  82. console.info (`Symbols in my code: ${arguments.callee + 0}`)
  83. }
  84. function modificator (func) {
  85. let amountSymbols = func.toString().length;
  86. func.valueOf = function() {
  87. return amountSymbols;
  88. }
  89. }
  90. modificator( sampleFunc )
  91. sampleFunc()
  92. // Дополнительно
  93. function testArguments () {
  94. function generateError (numArgs) {
  95. let err = new Error('Invalid arguments')
  96. err.stack = `Function needs 3 arguments, but only ${testArguments.arguments.length} present`
  97. err.name = 'Application'
  98. throw err
  99. }
  100. try {
  101. arguments.length >=3 ? null : generateError (arguments.length)
  102. }
  103. catch(err) {
  104. console.error(`${err.name}: ${err.message}\n${err.stack}`)
  105. }
  106. }
  107. testArguments('Google')