Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577

Привязка контекста к {}

29.08.2017, 23:45. Показов 1672. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно привязать контекст к объекту?
JavaScript
1
2
3
4
5
6
7
8
9
var obj1 = {
    prop: 1,
 
    method: {
        set: function () {
            return this.prop //вот тут подставить контекст obj1
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.08.2017, 23:45
Ответы с готовыми решениями:

Что это жесткая привязка к точке входа, физическое смещение в файле, окрестность точки входа в файл, привязка?
Что это жесткая привязка к точке входа, физическое смещение в файле, окрестность точки входа в файл, привязка к смещению сигнатуры...

Привязка сертификата в IIS 8.5 по Host name и привязка по Host name с SNI
В чем разница между привязкой сертификата в IIS 8.5 по Host name и привязкой по Host name с включенным Require Server Name Indication?

Потеря контекста
Доброго времени суток. Помогите понять следующий пример: взят от сюда https://learn.javascript.ru/bind var user = { ...

9
Всегда онлайн
 Аватар для MrOnlineCoder
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
30.08.2017, 01:18
rodigy, при вызове obj1.method.set используйте .call:
JavaScript
1
obj1.method.set.call(obj1, аргументы); //this в set() = obj1
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
30.08.2017, 02:20  [ТС]
MrOnlineCoder, а если вызывать только так
JavaScript
1
obj1.method.set();
можно ли сделать что сам объект obj1 управлял контекстом для дочерних объектов?
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
30.08.2017, 02:49
используйте функцию
к примеру так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function obj1() {
    var self = this instanceof obj1
        ? this
        : Object.create(obj1.prototype);
    self.init.apply(self, arguments);
    return self;
}
obj1.prototype = {
    init: function (args) {
        this.prop = args || 1;
    },
    get value() {
        return this.prop;
    },
    set value(value) {
        this.prop = value;
    }
};
var a = obj1();
console.log(a.value); // 1
a.value = 2;
console.log(a.value); //2
var b = obj1(5);
console.log(b.value); // 5
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
30.08.2017, 17:36  [ТС]
Fedor Vlasenko, Интересный подход, узнал кое что новое для себя, но таким способом теряется иерархия/цепочка вызовов
0
 Аватар для dailydose
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
30.08.2017, 19:09
JavaScript
1
2
3
4
5
6
7
8
9
var obj1 = {
    prop: 1,
 
    method: {
        set: function () {
            return this.prop //вот тут подставить контекст obj1
        }.bind(this) // bind(obj1)
    }
}
?
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
30.08.2017, 19:28  [ТС]
dailydose, я пробовал это результат undefined https://jsfiddle.net/d56rngyo/
0
388 / 275 / 76
Регистрация: 19.09.2011
Сообщений: 828
30.08.2017, 23:22
если бы у браузеров была поддержка Object.observe, можно было бы придумать вундервафлю, а так - никак.

либо использвать bind:
JavaScript
1
2
var obj1 =...
obj1.method.set = obj1.method.set.bind(obj1);
либо не использовать this вообще:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
var self = null;
var obj1 = {
    prop: 1,
 
    method: {
        set: function () {
            return self.prop
        }
    }
}
self = obj1;
0
 Аватар для rodigy
90 / 40 / 17
Регистрация: 24.10.2015
Сообщений: 577
31.08.2017, 01:22  [ТС]
nubideus, ну может и появится, ток бегло прочтя описания я понял что это отслеживание изменений объекта и как это поможет?
0
388 / 275 / 76
Регистрация: 19.09.2011
Сообщений: 828
31.08.2017, 14:43
Цитата Сообщение от rodigy Посмотреть сообщение
и как это поможет?
это бы помогло сделать вундервафлю, я же написал
Цитата Сообщение от nubideus Посмотреть сообщение
можно было бы придумать вундервафлю
можно было бы применить такую логику:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var self = null;
var wrapFn = function(fn) {
    return function() {
        return fn.apply(self, arguments)
    };
};
var obj1 = {
    prop: 1,
 
    method: {
        set: wrapFn(function () {
            return this.prop
        })
    }
}
self = obj1;
 
obj1.method.set(); // 1
сохранив при этом кусок кода из первого поста в исходном состоянии.

но в целом ответ такой:
Цитата Сообщение от rodigy Посмотреть сообщение
можно ли сделать что сам объект obj1 управлял контекстом для дочерних объектов?
нельзя. никак. это ерунда.
Цитата Сообщение от rodigy Посмотреть сообщение
а если вызывать только так
obj1.method.set();
уже ответили: bind, apply, call.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.08.2017, 14:43
Помогаю со студенческими работами здесь

Lifetime контекста
Как у вас в крупных проектах на ASP.MVC живёт контекст базы данных? То есть пока всё просто и общение с базой вынесено в отдельный слой, то...

Получение контекста!
Здавствуйте участники форума! :) На повестке возник такой вопрос. Обрисую ситуацию-> Есть класс, унаследованный от родителя,...

Подгруздка контекста.
Подгружаю контекст в див с помощью аякса. $(document).ready(function(){ $.ajax({ type: "POST", ...

Бегун. Виды контекста
Собственно чем отличается автоконтекст от гиперконтекста? И бегун еще не платит за показы, только за клики? в новостях:

Цена контекста в Японии
Если я не ошибаюсь, клики в америке и в европе порой стоят значительно дороже наших, отчественных. В связи с этим возникает вопрос: на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru