在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的框架,它促进了对DOM的快速操作,使用id并通过JavaScript文件对CSS进行编程,而不需要使用CSS文件和更友好的代码。
我在ezo中执行了与JQuery相同的操作(使用完整的democ代码):
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的$符号那样有这个错误呢?
发布于 2015-05-07 15:58:39
我如何使#成为像ezo这样的变量,而不像JQuery的$符号那样有这个错误呢?
你不能。#
不是有效的 character;$
是。变量和属性名称文本只能包含有效的IdentifierName字符。(还有更多,因为第一个字符有额外的要求,但是详细信息请参阅链接。)基本上只有两个非字母字符可以在变量或属性名称的开头使用,即$
和_
。这两家图书馆都被著名的图书馆使用过。:-)
虽然您可以使用括号、符号和引号创建一个窗口属性:
window["#"] = ...
...that显然很难使用,因为您必须随时随地编写window["#"]
(而不仅仅是#
)。-当然,你也可以选择你喜欢的英文字母中的任何一个字母,只是警告人们它是什么,但这可能不会很受欢迎。或者选择一个像Ω这样的非英语字母,但是A)在希腊可能不受欢迎,而B)在大多数键盘上输入会很尴尬。
更现实的选择:
ezo
很短,很容易输入,您可以直接使用它。$
,前提是使用您的框架的人不会使用jQuery (或者如果使用了,他们可以使用jQuery的noConflict
)。$$
( PrototypeJS也使用它,但除了在遗留代码库中以外,它不再被广泛使用)_e
发布于 2015-05-07 16:00:15
JavaScript对象名必须以Unicode字母开头,或下划线_,美元符号$。语言就是这样定义的。jQuery已经对$进行了殖民化,像underscore.js这样的各种库都有优先对_的声明。我会选择两个或更多字符的东西,比如$e或$z。
https://stackoverflow.com/questions/30106097
复制相似问题