JavaScript (67 6666 62 lines, 227227 269 bytes)
Z
=
!""+
(0[[]]
+
(
!!""+Set
));c
=Z[~
-22]
E
=Z[$=Z[
3]
L
=Z[
15]
O
=Z[$$=Z[
15]
$$$=Z[
24]
R
$$$$=Z[
1]
T
=Z[$$$$$=Z[
0]
Set
[c
+O
+Z[
5]
+Z[
16]
+T
+R
+Z[
2]
+c
+T+
+O$$$+Z[
5]
+Z[
16]
+
$$$$$+
$$$$+Z[
2]
+c
+
$$$$$+
$$$+
+R]$$$$]
(Z[
14]
+L
+E
+R
+T
+
"(\
'H\
"+E
+L
+L
+O
$$+
$+
$$$$+
$$$$$+
"(\
'H\
"+
$+
$$+
$$+
$$$+
",\
W\
"+O
+R
+L"+
$$$+
$$$$+
$$+Z[
6]
+
"\
!')\
")
()
// lines 1~8 defines our string containing all lowercase letters we want
Z = true + (undefined + (false + Set))
// Z = "trueundefinedfalsefunction Set() { [native code] }"
// lines 8~268~20 defines the variables `c`, `E``$` (e), `L``$$` (l), `O``$$$` (o), `R`
// `$$$$` (r), `T``$$$$$` (t)
// for the corresponding lowercase letters extracted from `Z`
// the rest calls:
Set["constructor"]("alert('Hello, World')")()
// lines 28~4122~36 generates the "constructor" string
// lines 42~6637~61 generates the "alert('Hello, World')" string
Update: Renamed E
, L
, O
, R
, T
to various repetition of $
to reduce 4 lines.