有人可以在javascript中写下一个非常简单的基本示例来概念化(并希望让我理解)jQuery插件设计模式是如何完成的以及它是如何工作的?
我对如何为jQuery创建插件不感兴趣(所以在这里根本没有jQuery代码).我对一个简单的解释(可能有一些Javascript代码)感兴趣,以解释它是如何完成插件概念的.
Plz不回复我去读jQuery代码,我试过,但我太复杂了,否则我不会在这里发一个问题.
谢谢!
背景
我一直在使用C预处理器来管理和"编译"包含多个文件和构建目标的半大型JavaScript项目.这使全面进入C预处理指令一样#include,#define,#ifdef等从JavaScript中.这是一个示例构建脚本,因此您可以测试示例代码:
#!/bin/bash
export OPTS="-DDEBUG_MODE=1 -Isrc"
for FILE in `find src/ | egrep '\.js?$'`
do
echo "Processing $FILE"
cat $FILE \
| sed 's/^\s*\/\/#/#/' \
| cpp $OPTS \
| sed 's/^[#:<].*// ; /^$/d' \
> build/`basename $FILE`;
done
Run Code Online (Sandbox Code Playgroud)
创建一个src和一个build目录,然后放入.js文件src.
便利宏
最初,我只是想要预处理器的东西#include,也许还有几个#ifdef,但我想,有一些方便的宏也不是很好吗?随后进行了实验.
#define EACH(o,k) for (var k in o) if (o.hasOwnProperty(k))
Run Code Online (Sandbox Code Playgroud)
很酷,所以现在我可以这样写:
EACH (location, prop) {
console.log(prop + " : " location[prop]);
}
Run Code Online (Sandbox Code Playgroud)
它将扩展到: …
存在编码不良的脚本,需要包含在网页中.
这些脚本通过以下方式污染全局范围:
Object和Array)及其原型添加属性我希望包含脚本而没有不良副作用.我认为可以通过在iframe中加载脚本并将对象导出为父窗口的属性来实现.这是我到目前为止所得到的:
<script>
(function(){
var g=this, frameIndex=frames.length, f=document.createElement('iframe');
// hide it like this instead of display:none, because some old browser ignores
// iframes with display:none, or is this an ancient habit I can drop?
f.style.width='0px'; f.style.height='0px';
f.style.border='none'; f.style.position='absolute';
// append it to document.body or document.documentElement?
// documentElement seems to work before body is loaded,
// but is it cross-browser safe?
document.body.appendChild(f);
// window object for our iframe
var w=frames[frameIndex];
// …Run Code Online (Sandbox Code Playgroud) 我玩过Google Charts和其他一些java脚本图表包,但我还没有达到预期的效果.我想知道是否有人能够指向我的JavaScript绘图包,开源或商业,他们知道能够创建我们目前使用.Net图表控件创建的以下类型的图表.
注意负轴......


这里我们有多个X,Y轴.

在这里,我们有时间轴,放大...
我们正在寻找一个JavaScript图表库,可以处理这种复杂性的图表,同时配置和使用仍然有点简单......任何想法?谢谢!
在JavaScript中似乎有几个不同的"组"类似函数的东西.以下是我的名字:
"常规函数":这些函数可以用parens和new.大多数功能都属于这一类.
"仅构造函数":这些函数new仅可调用.例如,Image,DOMParser等.
"非构造函数":这些函数可以用parens调用,但不能用new.例如Math.round,Function.prototype.
"不可调用函数":这些函数根本不可调用.例如,window.constructor,Document,NodeList,等.
这些不同功能组的专有名称是什么?
我还试图弄清楚函数所在的"组"是否可以根据其[[Prototype]](__proto__)属性是否设置来确定Function.prototype.
大多数"常规功能"都有Function.prototype,但可以使用非标准功能删除__proto__.
大多数"仅构造函数"具有Object.prototype.我找不到他们所拥有的任何情况Function.prototype(所以,没有call或apply).这总是情况/规格行为吗?
"非构造函数"似乎主要Function.prototype与其Function.prototype自身有关.还有其他案例Object.prototype吗?
"不可赎回的功能"似乎总是如此Object.prototype.是这样的吗?
我会在这里回答一些答案:
常规函数:
function
构造函数:constructor
非构造函数:method
不可调用:interface
这不是我真正想要的."函数"和"构造函数"当然是正确的,但我正在寻找更具体的东西("非构造函数"等).
"方法"并不比"函数"更好地告诉你它不能被调用new,并且constructor没有得到指出它只能被调用new.
在许多情况下,只能从constructor宿主对象的属性访问不可调用的函数.我认为大多数 …
假设script脚本运行时文档中的最后一个元素*是当前运行的脚本是否安全?
例如,我想创建一个脚本,可以将其放在页面正文的任何位置,并在同一个地方显示一个元素.我正在做这样的事情:
function getCurrentScriptElement() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1];
}
var script = getCurrentScriptElement();
var view = document.createElement('span');
/* Put stuff in our view... */
script.parentNode.insertBefore(view, script);
Run Code Online (Sandbox Code Playgroud)
假设脚本在文档正文中,这是"安全吗?" 该getCurrentScriptElement函数是否总是返回正在运行的脚本?如果没有,怎么办呢?
我想这样做而不将脚本绑定到特定的id属性或类似属性,我希望它只是位置.
我在这里创建了一个示例来拉入此脚本.一个答案表明,其他脚本可能会创建一个像这样的例子会破坏的情况.是否可以在此示例中添加其他脚本来破坏它?
有人建议其他带有defer或async属性的脚本可能会破坏这一点.任何人都可以举例说明这样的脚本是如何工作的吗?
据我了解,defer意味着首先加载DOM,然后使用defer标记运行脚本.defer出现在另一个脚本元素上的属性如何影响getCurrentScriptElement?的行为?
async,据我所知,意味着开始获取该脚本并同时保持解析DOM,不要等待......但是当它到达我的脚本时它应该仍然停止并等待,对吧?
我不知道任何一个人如何影响它,任何人都能提供一个例子吗?
*出于此问题的目的,我只对外部脚本感兴趣.
**不是script整个文档中的最后一个script元素,而是运行时文档中的最后一个元素.该文档的其余部分尚未加载,对吧?
我正在寻找一个开源JavaScript项目,我可以从中学习良好的编码实践,模式等.
例如,来自Java的等效"awesome code"示例可能是Spring项目内部.
我已经考虑过看看原型/ jquery,但有没有更好的(更好的是我的意思是更多的投入回报)?
我正在谈论你在java/ruby项目中找到的正确内容,而不是50行代码片段来动画我的按钮 - (抱歉这可能有点像JavaScript-ist).
这个javascript表达式可以评估的最高数字是多少?最低的数字是多少?为什么?
+(''+Math.random()).substring(2)
Run Code Online (Sandbox Code Playgroud)
额外信用:表达式可以评估多少个不同的值?可以是从最小值到最大值的每个值,还是由于舍入问题而无法获得的某些中间值?
回应丹尼尔的回答(删除,为10000000000000000最大,0分):
我在Chrome的控制台里玩,得到了这个:
Math.random();
>> 0.00012365682050585747
'12365682050585747'.length
>> 17
12365682050585747 > 10000000000000000
>> true
Run Code Online (Sandbox Code Playgroud)
......所以10000000000000000不能是最大的!
我想知道是否有一个Eclipse的插件可以执行一些java表达式?
例如,我想找到SimpleDateFormat的正确模式,我可以创建新的类,然后我在其中初始化几个格式化程序,在编译和执行后,我将看到一个结果,但我希望能够在这个插件中编写那些格式化程序在没有新类的情况下查看并查看执行后的结果.
谢谢
这有效:
HTML
<a href="/search/querystring">query</a>
Run Code Online (Sandbox Code Playgroud)
htaccess的
RewriteRule ^search/([-0-9a-z]+)$ /search.php?q=$1 [L]
Run Code Online (Sandbox Code Playgroud)
浏览搜索表单:
<form method="get" action="/search">
<input type="search" name="q" value="querystring" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是否可以使用htaccess或者我是否需要在search.php中使用PHP重定向?
示例所需的结果:http://twitter.com/search/hello
编辑
我不喜欢依赖JavaScript来执行此操作,因此搜索引擎和禁用JavaScript的人也会看到这一点.
javascript ×8
.htaccess ×1
charts ×1
clean-urls ×1
constructor ×1
dom ×1
eclipse ×1
function ×1
html ×1
iframe ×1
java ×1
macros ×1
php ×1
preprocessor ×1
search ×1
shell ×1
terminology ×1