如何将非文字添加到像 jQuery 这样的变量中?
How to add non-literal into a variable like jQuery?
在JQuery代码的最后部分jQuery变量赋值给一个$符号:
// Expose jQuery and $ identifiers, even in
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
if ( typeof noGlobal === strundefined ) {
window.jQuery = window.$ = jQuery;
}
现在我正在制作自己的名为 ezo 的框架,它通过 JavaScript 文件使用 id 和程序 CSS 促进 DOM 的快速操作,而不必制作 CSS文件和代码更友好。
我在 ezo 中做了与 JQuery 相同的操作(带有完整的演示代码):
var ezo = function(selector) {
var dom = document.getElementById(selector);
dom.setText = function(string) {
dom.innerText = string;
};
dom.appendText = function(string) {
dom.innerText = dom.innerText + string;
};
dom.setSize = function(width, height) {
$(selector).css("width", width);
$(selector).css("height", height);
};
dom.setBGColor = function(color) {
$(selector).css("background-color", color);
};
dom.setFontSize = function(size) {
$(selector).css("font-size", size);
}
dom.setFontColor = function(color) {
$(selector).css("color", color);
}
dom.align = function(al) {
$(selector).css("text-align", al);
};
dom.getNodeName = function() {
return $(selector)[0].nodeName;
};
return document.getElementById(selector);
};
$(document).ready = function() {
window.ezo = window.# = ezo;
};
然后我在 html 文件上测试了我的框架来操作节点:
<!DOCTYPE html>
<html>
<head>
<title>Ezo Test</title>
<link rel="stylesheet" href="stylesheet.css" />
<script src="jquery-1.11.2.js"></script>
<script src="ezo-1.0.js"></script>
<script src="script.js"></script>
</head>
<body>
<h1 id="header"> This is a header! Edit Me </h1>
<p id="par">I'm a lovely paragraph!</p>
<div id="box">
<p id="par2">I'm an empty div !</p>
</div>
</body>
</html>
在我 运行 html 文件之后,JS 控制台警告我 # 是非法标记!我怎样才能使#成为像ezo这样的变量而不会像JQuery的$符号那样出现这个错误?
How can I make # as a variable like ezo without having this error just like JQuery's $ sign?
你不能。 #
不是有效的 IdentifierName character; $
是。变量和 属性 名称文字必须仅包含有效的 IdentifierName 字符。 (还有更多,因为第一个字符有额外的要求,但请参阅 link 了解详细信息。)基本上只有两个非字母字符可以用于变量的开头或 属性 姓名,$
和 _
。两者都已被知名图书馆使用。 :-)
虽然您可以使用括号符号和引号创建window 属性:
window["#"] = ...
...这显然使用起来很尴尬,因为你必须在所有地方写 window["#"]
(不仅仅是 #
)。 :-) 或者当然,您可以选择任何您喜欢的英文字母,真的,只是警告人们它是什么,但这可能不会流行。或者选择一个非英语字母,例如 Ω,但是 A) 这在希腊可能不流行,并且 B) 在大多数键盘上打字会很尴尬。
更现实的选择:
ezo
很短而且很容易打字,你可以直接使用它。
- 或者您可以使用
$
,假设使用您的框架的人不会使用 jQuery(或者如果他们使用,他们可以使用 jQuery 的 noConflict
).
- 或
$$
(PrototypeJS也使用过,但除了遗留代码库外,它不再被广泛使用)
- 或
_e
- 或其他一百万件事中的任何一个...
JavaScript 对象名称必须以 Unicode 字母或下划线 _、美元符号 $ 开头。这就是语言的定义方式。 jQuery 已经将 $ 殖民化,并且 underscore.js 等各种图书馆都拥有对 _ 的优先权。我会选择包含两个或更多字符的内容,例如 $e 或 $z。
在JQuery代码的最后部分jQuery变量赋值给一个$符号:
// Expose jQuery and $ identifiers, even in
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
if ( typeof noGlobal === strundefined ) {
window.jQuery = window.$ = jQuery;
}
现在我正在制作自己的名为 ezo 的框架,它通过 JavaScript 文件使用 id 和程序 CSS 促进 DOM 的快速操作,而不必制作 CSS文件和代码更友好。
我在 ezo 中做了与 JQuery 相同的操作(带有完整的演示代码):
var ezo = function(selector) {
var dom = document.getElementById(selector);
dom.setText = function(string) {
dom.innerText = string;
};
dom.appendText = function(string) {
dom.innerText = dom.innerText + string;
};
dom.setSize = function(width, height) {
$(selector).css("width", width);
$(selector).css("height", height);
};
dom.setBGColor = function(color) {
$(selector).css("background-color", color);
};
dom.setFontSize = function(size) {
$(selector).css("font-size", size);
}
dom.setFontColor = function(color) {
$(selector).css("color", color);
}
dom.align = function(al) {
$(selector).css("text-align", al);
};
dom.getNodeName = function() {
return $(selector)[0].nodeName;
};
return document.getElementById(selector);
};
$(document).ready = function() {
window.ezo = window.# = ezo;
};
然后我在 html 文件上测试了我的框架来操作节点:
<!DOCTYPE html>
<html>
<head>
<title>Ezo Test</title>
<link rel="stylesheet" href="stylesheet.css" />
<script src="jquery-1.11.2.js"></script>
<script src="ezo-1.0.js"></script>
<script src="script.js"></script>
</head>
<body>
<h1 id="header"> This is a header! Edit Me </h1>
<p id="par">I'm a lovely paragraph!</p>
<div id="box">
<p id="par2">I'm an empty div !</p>
</div>
</body>
</html>
在我 运行 html 文件之后,JS 控制台警告我 # 是非法标记!我怎样才能使#成为像ezo这样的变量而不会像JQuery的$符号那样出现这个错误?
How can I make # as a variable like ezo without having this error just like JQuery's $ sign?
你不能。 #
不是有效的 IdentifierName character; $
是。变量和 属性 名称文字必须仅包含有效的 IdentifierName 字符。 (还有更多,因为第一个字符有额外的要求,但请参阅 link 了解详细信息。)基本上只有两个非字母字符可以用于变量的开头或 属性 姓名,$
和 _
。两者都已被知名图书馆使用。 :-)
虽然您可以使用括号符号和引号创建window 属性:
window["#"] = ...
...这显然使用起来很尴尬,因为你必须在所有地方写 window["#"]
(不仅仅是 #
)。 :-) 或者当然,您可以选择任何您喜欢的英文字母,真的,只是警告人们它是什么,但这可能不会流行。或者选择一个非英语字母,例如 Ω,但是 A) 这在希腊可能不流行,并且 B) 在大多数键盘上打字会很尴尬。
更现实的选择:
ezo
很短而且很容易打字,你可以直接使用它。- 或者您可以使用
$
,假设使用您的框架的人不会使用 jQuery(或者如果他们使用,他们可以使用 jQuery 的noConflict
). - 或
$$
(PrototypeJS也使用过,但除了遗留代码库外,它不再被广泛使用) - 或
_e
- 或其他一百万件事中的任何一个...
JavaScript 对象名称必须以 Unicode 字母或下划线 _、美元符号 $ 开头。这就是语言的定义方式。 jQuery 已经将 $ 殖民化,并且 underscore.js 等各种图书馆都拥有对 _ 的优先权。我会选择包含两个或更多字符的内容,例如 $e 或 $z。