Entries

笔记:JavaScript -- 代码调整技巧(1)

多行的字符串或者较长的不便于在记事本等工具中编辑的字符串,可以这样写:
var longString = "这是一个很长很长很长很长很长很长很长很长很长很长很长很长\
很长很长很长很长很长很长很长很长很长很长很长很长很长的字符串。";

var multiLine = "这是一个多行的字符串,\n\
这是字符串的第二行。";

需要注意的是,通常我们在类c的语言中使用“\n”(\x0a, 10)来表示分行,但在具体的应用环境中,分行符号有多种可能性,比方说在DOS中是“\r”(\x0d, 13)、在Windors中是“\r\n”、在很多的其它环境中是“\n”,偶尔也有“\n\r”的情况。

在RFC中通常只有“\r\n”被承认为正式的分行。但为了兼容各种稀奇古怪的情况,很多程序在没有“\r\n”的时候把单独的“\r”或者“\n”也当作分行符号处理。

上文提到的在JavaScript中把字符串断成几行写的技巧,也遵循这个原则(在IE和FF中测试过)。

eval('"\\\n"')
可行
eval('"\\\r"')
可行
eval('"\\\r\n"')
可行
eval('"\\\n\r"')
不可
eval('"\\\r\r"')
不可
有“\r\n”连续存在时优先处理连续的“\r\n”。

猜测对于其它的各种文本解释应用也同样适用。



FireFox和一些其它浏览器在一个HTML对象事件发生时会将描述事件细节的event对象作为第一个参数传入事件处理过程(函数),而IE的做法是始终用window.event表示(FireFox中inline匿名处理过程第一个参数也叫做event)——这表示如果希望在几层之外的函数中直接访问event对象,这几层函数就都需要显式地处理event参数……虽然不是什么大不了的问题,但我不太喜欢这样。
所以我写了一段代码简化event对象的访问。

////////////////////////////////////////
// Author : ShinRon4.blog126.fc2.com //
////////////////////////////////////////

// $ window.event object
if((typeof(window.event) != "object") && window.__defineGetter__){
window.__defineGetter__("event", function(){
try{
var tmpCaller = arguments.callee.caller;
var tmpObj;
while((typeof(tmpObj = tmpCaller.arguments[0]) != "object") || !(tmpObj instanceof window.Event)){
tmpCaller = tmpCaller.caller;
}
return tmpObj;
}catch(e){
return null;
}
});
}
引用此文章(FC2博客用户)
http://shinron4.blog126.fc2blog.us/tb.php/11-ec9ffa82

引用

留言

发表留言

发表留言
只对管理员显示

Appendix

自我介绍

优雅的神棍 / Elegant Tales

Author:优雅的神棍 / Elegant Tales
神棍你好,神棍再见。

最新引用

QR

QR

羔羊们啊

加为好友

和此人成爲好友

搜寻栏