首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将非文字添加到像jQuery这样的变量中?

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

Stack Overflow用户
提问于 2015-05-07 15:55:56
回答 2查看 72关注 0票数 0

在JQuery中,在代码的最后一部分,jQuery变量被分配给$符号:

代码语言:javascript
运行
复制
// 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代码):

代码语言:javascript
运行
复制
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文件上测试了我的框架以操作节点:

代码语言:javascript
运行
复制
<!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的$符号那样有这个错误呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-07 15:58:39

我如何使#成为像ezo这样的变量,而不像JQuery的$符号那样有这个错误呢?

你不能。#不是有效的 character$是。变量和属性名称文本只能包含有效的IdentifierName字符。(还有更多,因为第一个字符有额外的要求,但是详细信息请参阅链接。)基本上只有两个非字母字符可以在变量或属性名称的开头使用,即$_。这两家图书馆都被著名的图书馆使用过。:-)

虽然您可以使用括号、符号和引号创建一个窗口属性:

代码语言:javascript
运行
复制
window["#"] = ...

...that显然很难使用,因为您必须随时随地编写window["#"] (而不仅仅是#)。-当然,你也可以选择你喜欢的英文字母中的任何一个字母,只是警告人们它是什么,但这可能不会很受欢迎。或者选择一个像Ω这样的非英语字母,但是A)在希腊可能不受欢迎,而B)在大多数键盘上输入会很尴尬。

更现实的选择:

  • ezo很短,很容易输入,您可以直接使用它。
  • 或者您可以使用$,前提是使用您的框架的人不会使用jQuery (或者如果使用了,他们可以使用jQuery的noConflict)。
  • 或者$$ ( PrototypeJS也使用它,但除了在遗留代码库中以外,它不再被广泛使用)
  • _e
  • 或者任何其他的东西..。
票数 2
EN

Stack Overflow用户

发布于 2015-05-07 16:00:15

JavaScript对象名必须以Unicode字母开头,或下划线_,美元符号$。语言就是这样定义的。jQuery已经对$进行了殖民化,像underscore.js这样的各种库都有优先对_的声明。我会选择两个或更多字符的东西,比如$e或$z。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30106097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档