如何将非文字添加到像jQuery这样的变量中?

时间:2015-05-07 15:55:57

标签: javascript jquery html css frameworks

在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?

2 个答案:

答案 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。