在JQuery的代码的最后部分,jQuery变量被赋值给$ sign:
// 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控制台警告我#是非法令牌!如何在不出现像JQuery的$ sign这样的错误的情况下将#作为变量而不是ezo?
答案 0 :(得分:2)
如何在没有像JQuery的$符号这样的错误的情况下将#作为变量而不是ezo?
你做不到。 #
不是有效的IdentifierName character; $
是。变量和属性名称文字必须仅包含有效的 IdentifierName 字符。 (还有更多内容,因为第一个字符有其他要求,但请参阅链接了解详细信息。)在变量或属性名称$
的开头,基本上只能使用两个非字母字符。和_
。两者都被Well Known Libraries使用。 : - )
虽然可以使用括号表示法和引号
创建窗口属性window["#"] = ...
......使用起来显然很尴尬,因为你必须在任何地方写window["#"]
(而不仅仅是#
)。 :-)当然,你可以选择任何你喜欢的英文字母,真的,并且只是警告人们它是什么,但这可能不会受欢迎。或者选择像Ω这样的非英文字母,但A)这在希腊可能不受欢迎,而且B)在大多数键盘上输入都会很尴尬。
更现实的选择:
ezo
非常短且易于输入,您可以使用它。$
假设使用您的框架的人不会使用jQuery(或者如果他们这样做,他们可以使用jQuery的noConflict
)。$$
(PrototypeJS也使用过它,但除了遗留代码库之外,它还没有被广泛使用)_e
答案 1 :(得分:0)
JavaScript对象名称必须以Unicode字母或下划线_,美元符号$开头。这就是语言的定义方式。 jQuery已经殖民了$和各种库,如underscore.js先前声称_。我会选择两个或更多字符的东西,比如$ e或$ z。