Наконец, я нашел решение. Ниже приведено решение: -
import os
import sys
import time, datetime
CLASS_PATH = '/srv/www/live/mainapp/classes'
SETTINGS_PATH = '/srv/www/live/foodtrade'
sys.path.insert(0, CLASS_PATH)
sys.path.insert(1,SETTINGS_PATH)
import other_py_files
===
проверяет значение (если объект является числом или логическим), тип и ссылка на объект. Если вы создадите 2 объекта с одинаковыми атрибутами, такими как следующее, он вернет false:
let a = { test: 'test' };
let b = { test: 'test' };
console.log(a === b); // gives false
, потому что это не та же ссылка. Таким образом, в вашем случае selectedHero === hero
будет истинным, если ваши 2 объекта имеют одинаковую ссылку.
EDIT:
Еще одна точность заключается в том, что вы можете скопировать ссылку на объект в другую:
let a = { test: 'test' };
let b = a;
console.log(a === b); // gives true
, а затем, если вы измените атрибут одной ссылки, она изменится для обоих:
let a = { test: 'test' };
let b = a;
a.test = 'foo';
console.log(b.test) // gives foo
Каждый раз, когда вы нажимаете на li elemnt onSelect
, и устанавливаете переменную selectedHero
с героем elemnt из массива героев, герои содержат объекты, поэтому агитация просто устанавливается selectedHero, чтобы быть refrence текущему элементу (герою) и когда мы пытаемся сопоставить (== или ===) объект, сравните, если точка с одним и тем же refrence или нет
let a = {};
let b = {};
let c = a;
console.log(a === b); // false
console.log(a === c); // true
=== на объекте проверяется адрес объекта, а не значение. Если вам нужна дополнительная информация, вы можете посмотреть, как работают указатели.
Но в принципе, если (hero === selectedHero) возвращает true, они указывают на тот же адрес памяти. Поэтому, если вы измените значение selectedHero, оно также изменит значение героя [0].