Содержание
- 2. План занятия Методы объектов, this Преобразование объектов: toString и valueOf Создание объектов через «new» Дескрипторы, геттеры
- 3. Методы объектов
- 4. Методы у объектов var user = { name: 'Василий', // метод sayHi: function() { console.log( 'Привет!'
- 5. Доступ к объекту через this var user = { name: 'Василий', sayHi: function() { console.log( this.name
- 6. Доступ к объекту через this var user = { name: 'Василий', sayHi: function() { console.log( user.name
- 7. Доступ к объекту через this var user = { name: 'Василий', sayHi: function() { // передать
- 8. this у функции function sayHi() { console.log( this.firstName ); }
- 9. this у функции var user = { firstName: 'Вася' }; var admin = { firstName: 'Админ'
- 10. Значение this без контекста function func() { console.log( this ); // выведет [object Window] или [object
- 11. Что выведет этот код? var arr = ['a', 'b']; arr.push(function() { console.log( this ); }); arr[2]();
- 12. // "a","b",function Задачка 8.1 решение
- 13. Создайте объект calculator с тремя методами: read() запрашивает prompt два значения и сохраняет их как свойства
- 14. var calculator = { sum: function() { return this.a + this.b; }, mul: function() { return
- 15. Преобразование объектов: toString и valueOf
- 16. Логическое преобразование if ({} && []) { console.log( 'Все объекты - true!' ); // console.log сработает
- 17. Строковое преобразование var user = { firstName: 'Василий' }; alert( user ); // [object Object]
- 18. Строковое преобразование var user = { firstName: 'Василий', toString: function() { return 'Пользователь ' + this.firstName;
- 19. Строковое преобразование alert( [1, 2] ); // toString для массивов выводит список элементов “1,2" alert( new
- 20. Численное преобразование var room = { number: 777, valueOf: function() { return this.number; }, toString: function()
- 21. Какими будут результаты alert? Задачка 8.3 var foo = { toString: function() { return 'foo'; },
- 22. Какими будут результаты у выражений? Задачка 8.4 new Date(0) - 0 new Array(1)[0] + “" ({})[0]
- 23. Создание объектов через «new»
- 24. Конструктор function Animal(name) { this.name = name; this.canWalk = true; } var animal = new Animal('Elephant');
- 25. Конструктор Создаётся новый пустой объект. Ключевое слово this получает ссылку на этот объект. Функция выполняется. Как
- 26. Конструктор animal = { name: 'Elephant', canWalk: true }
- 27. Конструктор function Animal(name) { // this = {}; // в this пишем свойства, методы this.name =
- 28. Правила обработки return При вызове return с объектом, будет возвращён он, а не this. При вызове
- 29. Правила обработки return function BigAnimal() { this.name = 'Мышь'; return { name: 'Годзилла' }; // object
- 30. Правила обработки return function BigAnimal() { this.name = 'Мышь'; return 'Годзилла'; // string } console.log( new
- 31. Создание методов в конструкторе function User(name) { this.name = name; this.sayHi = function() { console.log( 'Моё
- 32. Локальные переменные function User(firstName, lastName) { // вспомогательная переменная var phrase = 'Привет'; // вспомогательная вложенная
- 33. Дескрипторы, геттеры и сеттеры свойств
- 34. Дескрипторы Object.defineProperty(obj, prop, descriptor)
- 35. Дескрипторы value — значение свойства, по умолчанию undefined writable — значение свойства можно менять, если true.
- 36. Обычное свойство var user = {}; // 1. простое присваивание user.name = 'Вася'; // 2. указание
- 37. Свойство-константа 'use strict'; var user = {}; Object.defineProperty(user, 'name', { value: 'Вася', writable: false, // запретить
- 38. Свойство, скрытое для for..in var user = { name: 'Вася', toString: function() { return this.name; }
- 39. Свойство, скрытое для for..in var user = { name: 'Вася', toString: function() { return this.name; }
- 40. Свойство-функция var user = { firstName: 'Вася', surname: 'Петров' }; Object.defineProperty(user, 'fullName', { get: function() {
- 41. Свойство-функция var user = { firstName: 'Вася', surname: 'Петров' }; Object.defineProperty(user, 'fullName', { get: function() {
- 42. get/set в литералах var user = { firstName: 'Вася', surname: 'Петров', get fullName() { return this.firstName
- 43. Статические и фабричные методы
- 44. Статические свойства function Article() { Article.count++; } // статическое свойство-переменная Article.count = 0; // статическое свойство-константа
- 45. Статические методы function Article() { Article.count++; //... } Article.count = 0; Article.showCount = function() { console.log(
- 46. Сравнение объектов function Journal(date) { this.date = date; // ... } // возвращает значение, большее 0,
- 47. Статические методы function Journal() { /*...*/ } Journal.formatDate = function(date) { return date.getDate() + '.' +
- 48. Фабричные методы new Date() new Date(milliseconds) new Date(year, month, day ...) new Date(datestring)
- 49. function User(userData) { if (userData) { this.name = userData.name; this.age = userData.age; } else { this.name
- 50. function User() { this.sayHi = function() { console.log(this.name) }; } User.createAnonymous = function() { var user
- 51. Преимущества фабричных методов Лучшая читаемость кода. Лучший контроль ошибок. Удобная расширяемость.
- 52. План занятия Методы объектов, this Преобразование объектов: toString и valueOf Создание объектов через «new» Дескрипторы, геттеры
- 54. Скачать презентацию