Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 06.08.2014
Сообщений: 157

Произвольно меняются свойства обьектов

24.09.2014, 19:18. Показов 696. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
допустим есть такой обьект
JavaScript
1
2
3
4
5
6
7
function obj(){
     this.p1 = 0,
     this.p2 = "tt",
     this.p3 = {
          "arrayObj":[{"p4":"val4"}, {"p5":"val5"}]
     }
}
вообщем после того как вытаскиваю arrayObj и заношу его в copy
var myObj = new obj();
var copy = myObj.p3.arrayObj
А потом отдаю copy на исполение стороннему скрипту(который меняет его значение),
у меня меняется и сам myObj.p3.arrayObj.
Как сделать так чтобы сторонний плагин не мог никак поменять свойство обьекта?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2014, 19:18
Ответы с готовыми решениями:

Не меняются свойства объекта
Добрый день. Возникла проблема следующего характера: Есть объект obj: var obj = { count : 0 } obj.f1 = function () {

Не меняются свойства Word документа
Друзья, подскажите пожалуйста, почему не меняются свойства Ворд документа ? В архиве проект VB6 и два файла Ворд. Свойства второго...

Почему в VB 2010 не отображаются все свойства обьектов?
Скажите пожалуйста, почему в 2010 MVS не отображаются все свойства обьектов? Я это заметил когда пытался создать программку которая...

13
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.09.2014, 19:34
xoma_204, объекты передаются по ссылкам. Копировать необходимо вручную.
0
1 / 1 / 0
Регистрация: 06.08.2014
Сообщений: 157
24.09.2014, 20:43  [ТС]
не понял? это как?

Добавлено через 1 минуту
мне надо передать не обьект а его свойство,
когда я пишу так
JavaScript
1
2
var myObj = new obj();
var copy = myObj.p3.arrayObj
И отддаю плагину copy, У меня меняется свойства myObj
Как сделать так чтобы не менялось?

Добавлено через 40 минут
А что значит объекты передаются по ссылкам?
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
24.09.2014, 20:43
xoma_204, вам же сказали, что передается ссылка на объект, то есть по сути, нет ни какой копии, просто переменная copy хранит в себе ссылку, на переменную оригинал, где находится объект. Можно написать вот так вот :
JavaScript
1
2
3
4
5
6
7
function copy (obj) {
    var _obj = {};
    for(var i in obj) {
        _obj[i] = obj[i];
    }
    return _obj;
}
Будет возвращать вновь созданный объект, который не как не связан с оригиналом, но при этом идентичен ему
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.09.2014, 20:47
Никак. Массив является объектом -> передаётся по ссылке. Впрочем массив копируется относительно легко:
JavaScript
1
var copy = myObj.p3.arrayObj.filter(function (){return true;});
Добавлено через 1 минуту
Цитата Сообщение от Thisman Посмотреть сообщение
Будет возвращать вновь созданный объект, который не как не связан с оригиналом, но при этом идентичен ему
А вот и не всегда. Свойство может быть, например, не enemerable - или как оно там называется.

Добавлено через 14 секунд
Ладно, это уже совсем придирки.
0
Модератор
 Аватар для Thisman
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
24.09.2014, 20:49
FraidZZ, enumerable, ну как их копировать, не зная явна, я не знаю. На врядли ТС использует такие свойства,
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.09.2014, 20:53
Цитата Сообщение от Thisman Посмотреть сообщение
не зная явна, я не знаю.
Угу, я тоже

Добавлено через 24 секунды
Да вроде таких способов и теоретически нет)
0
1 / 1 / 0
Регистрация: 06.08.2014
Сообщений: 157
24.09.2014, 21:18  [ТС]
Т.е если я меняю copy я меняю и оригинальное свойство обьекта???
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.09.2014, 21:54
xoma_204, угу.

Добавлено через 1 минуту
Нет, стоп. При присваивании - нет.
JavaScript
1
2
3
4
var a = {a:1, b: 2 };
var b = a;
b.b = 3; // => Теперь 'a' = {a: 1, b: 3}
b = null; // => 'a' не равен null!
0
1 / 1 / 0
Регистрация: 06.08.2014
Сообщений: 157
24.09.2014, 22:11  [ТС]
что то я запутался, вы присволи b.b = 3
Но при этом поменялся и оригинальный обьект a
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.09.2014, 22:55
xoma_204, а так ?

JavaScript
1
2
3
4
5
var a = {a:1, b: 2 }; // Создаём объект и присваиваем ссылку на него переменной 'a'
var b = a; // Присваиваем переменной 'b' ссылку (!!!) на объект, ссылка на которого в 'a'.
// Теперь обе переменные ссылаются на один и тот же объект.
b.b = 3; // Обращаемся к свойству по ссылке. Перезаписывается свойство объекта.
b = null; // Переприсваиваем переменной 'b' null вместо ссылки. Теперь на объект ссылается только 'a'
0
1 / 1 / 0
Регистрация: 06.08.2014
Сообщений: 157
24.09.2014, 22:58  [ТС]
а как можно по простому сделать так чтобы свойства оригинального обьекта не менялись?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.09.2014, 23:13
xoma_204, копировать объект и присваивать переменной ссылку на него, а не на оригинальный. Пример уже приводился Thisman.
Цитата Сообщение от Thisman Посмотреть сообщение
JavaScript
1
2
3
4
5
6
7
function copy (obj) {
    var _obj = {};
    for(var i in obj) {
          _obj[i] = obj[i];
    }
    return _obj;
}
0
1 / 1 / 0
Регистрация: 06.08.2014
Сообщений: 157
24.09.2014, 23:56  [ТС]
Но ведь это не очень правильный вариант, как мне кажется.
Ведь наверняка есть просто способ, без лишних функций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2014, 23:56
Помогаю со студенческими работами здесь

Значения логического типа из базы в свойства обьектов
Здравствуйте! тут придумал одну тему, она состоит вот в чем! у меня в базе ассеса есть табличка с полями данных логического типа, нужно...

Бьет ли произвольно установленный ферзь произвольно установленную фигуру?
Текст задачи "Положение фигуры на шахматной доске(8х8) задаётся двумя числами - номером горизонтали и номером вертикали. Ввести с...

Выполнить команду в set свойства для свойства SelectedItem (ComboBox ) MVVM
Хай Коротко: при каждом выборе элемента из ComboBox нужно выполнять команду, для которой в качестве параметра нужно передать экземпляр...

PropertyGrid. Как отловить видимость свойства в зависимости от другого свойства?
Работаю с propertyGrid. Одно поле высвечивается, когда в другом появляется определенное значение. Взяла за основу раздел «Как управлять...

Что лучше, свойства с приватной переменной или автоматические свойства?
Известно, что в классах свойства можно определить так: class MyClass { private int val; public int Val ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 17.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 14.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru