另一种编写元素 ID 的方法?

A different way to write the element ID?

下面我有这一行javascript。我想知道是否有另一种方法可以编写 name-id 标记(元素 ID)。那么我可以用不同的方式来写它,意思是一样的吗? ASCII 格式的示例?

我知道在 C 中我可以用 ASCII 形式写这个。

var myname = document.getElementById("name-id").innerHTML;

元素 ID 自动成为全局 window 对象中的属性,因此您可以这样写:

var myname = window['name-id'].innerHTML;

并且由于 window 属性是全局变量,您也可以将其作为变量访问,但前提是 ID 是有效标识符。由于标识符名称中不允许使用 -,因此您不能使用 name-id 执行此操作。但如果你有:

var myname = document.getElementById("someid").innerHTML;

你可以这样写:

var myname = someid.innerHTML;

不过,我并不是真的推荐这个,我只是为了演示目的而展示它。如果元素 ID 与标准 window 属性(例如 locationdocument)相同,则标准 属性 优先。

Do DOM tree elements with ids become global variables?

您可以在官方 ECMAScript documentation.

中找到 JavaScript 当前实现中字符编码的技术细节

ECMAScript code is expressed using Unicode, version 8.0.0 or later. ECMAScript source text is a sequence of code points. All Unicode code point values from U+0000 to U+10FFFF, including surrogate code points, may occur in source text where permitted by the ECMAScript grammars.

如果对技术方面不太感兴趣并且需要混淆器服务,请使用其中任何一个或比较它们。用最少的努力,你可以产生这样的东西:

var _0x2245=['innerHTML','querySelector'],x="tell_me_a_nice_story"
.split("_"),y="#"+x[3][0]+"a"+x[1]+"-"+x[3][1];_0x2245.push(y+"d")
,function(x0,x){!function(x){for(;--x;)x0.push(x0.shift())}(++x)}(
_0x2245,4e3);var _0x1144=function(x0,x0x0){return _0x2245[x0-=0]},
myname=document[_0x1144("0x0")]( _0x1144("0x1"))[_0x2245[+2e0+0]];

console.log(myname);
<div id="name-id"
>Why would you do this?
</div>


如果你真的想让其他人难以阅读你的代码 name-id,你可以在上面做很多事情。

你可以写一些完全不同的东西,它包含所有需要的字符或除了一个以外的所有字符,你稍后会添加,将该字符串拆分成一个数组,使用其他一些未使用的字母作为分隔符,从它们的当前位置获取一些数组元素并将它们放在其他位置,加入一些,删除其他人并反转其他人的价值。发挥创意。

在上面第二行的末尾,我将 innerHTMLquerySelector#name-id 作为同一数组的成员。只有 name-id 是从 tell_me_a_nice_story 中用 mambo-jambo 编辑的,但我可以很容易地从稍长的文本中生成 innerHTMLquerySelector,前提是它包含大部分必需的字母。将其视为一轮拼字游戏。

"code block" 的最后一行可以替换为以下任何内容:

myname=document.getElementById(_0x2245[1].substring(1)).innerHTML;
myname=document.getElementById(_0x1144(1).substring(1)).innerHTML;
myname=document.querySelector(_0x1144(1)||_0x2245(1e0)).innerHTML;
myname=document.querySelector(_0x2245[`1`]||_0x1144(1)).innerHTML;
myname=document[_0x1144(0e3)](_0x2245[1-0]||"\_(ツ)_/").innerHTML;

或无数其他变体,"kind of" 回答您的问题并符合字符数:66.

但是,让我们明确一点:JavaScript 中任何体面的人都可以毫无问题地调试您的代码或 console.log()-ing 您最后一步的结果,以获取 a 中的值几秒钟的事。

平心而论,如果没有服务器(到运行 适当的加密服务)。