1.加入我写了三个JS函数,我只想开放其中的一个给其它开发者,可以做到吗?
其实这一点类似java语言中的访问控制符。
re:可以2.可否做到我定义的JS对象不能被修改?
re:可以
3.可否做到定义的全局变量不可修改?
re:可以4.如何防止别人对我的写的JS函数的覆盖?
re:没搞过5.我们使用的XMLHttpRequest对象来实现异步请求,当业务需要多个请求时,
是否要考虑多个XMLHttpRequest实例,因为考虑到回调函数的线程安全问题?
re:单例模式会减少内存开销,你可以看看这本书:
Ajax--Web开发、可重用组件及模式
http://www.china-pub.com/37522PS:最近在看prototype.js,
其实这几个问题,分数肯定不止100分了,但论坛好像最高设置100分,所以还请大家帮忙,非常感谢。
re:我可以给200分:)
其实这一点类似java语言中的访问控制符。
re:可以2.可否做到我定义的JS对象不能被修改?
re:可以
3.可否做到定义的全局变量不可修改?
re:可以4.如何防止别人对我的写的JS函数的覆盖?
re:没搞过5.我们使用的XMLHttpRequest对象来实现异步请求,当业务需要多个请求时,
是否要考虑多个XMLHttpRequest实例,因为考虑到回调函数的线程安全问题?
re:单例模式会减少内存开销,你可以看看这本书:
Ajax--Web开发、可重用组件及模式
http://www.china-pub.com/37522PS:最近在看prototype.js,
其实这几个问题,分数肯定不止100分了,但论坛好像最高设置100分,所以还请大家帮忙,非常感谢。
re:我可以给200分:)
解决方案 »
- 有搞backbone的高手请给个实例
- Jquery中load()中载入静态页面时出现乱码
- 吐血,找了一下午的错误,竟然发现IE6不支持单引号?
- 如何在一个JS文件里继承另一个JS里的方法
- js 如何打开新页?除了open
- 禁止页面刷新,包括鼠标\键盘\F5,如何实现?
- 妈的,快死人了!该死的滚动条位置控制!到处提问竟然没有人解决!着急中......
- 日期校验
- 请问这是什么意思?document.ls.title.value=parent.parent.TITLEtoSubmit.substr(0,200);
- cookie的值为何取不到?
- 请教高手:动态添加onclick事件
- javascript中的match(/*/)方法,匹配字符问题
我也是粗略看了一下prototype.js,才有了上述疑问,
那么比如说igoogle中的一个一个“小工具”,如果某个开发“小工具”的人想恶作剧的话,那么他就可以搞乱igoogle的API函数库了。以前就觉得JS实在不是一个强类型语言,前年写JS还算是有一段时间,但现在感觉对JS的对象认识是太浅了
我也只算是半桶水。只提供一些参考意见。
1. function a() {
function b() {
alert("b");
}
}我是没想到怎样在函数a外调用函数b。有高手,可指点。
举个private的例子
<script type="text/javascript">
//<![CDATA[
var bar = (function foo() {
var private_var = 'never-online';
return {
get: function () {
alert(private_var);
},
set: function (str) {
private_var = str;
}
}
})();
bar.get();
bar.set('BlueDestiny');
bar.get();
alert(bar.private_var);
//]]>
</script>
最后一个,如果你要同时用XMLHttpRequest请求的线程,回调函数线程安全问题,我的理解是,以IE为例,IE XMLHttpRequest是ActiveXObject,ActiveXObject是允许多线程的,即XMLHttpRequest是多线程的,但你一旦从这个线程出来还是到了主线程里,而主线程是不允许多线程的,即IE里执行js是单线程的,也就是说,无论你有多少个请求,多少个回调,多线程无非是在XMLHttpRequest做的事,与真正的js的实现的代码无关,因此无需考虑安全问题.但是我建议不要使用多个XMLHttpRequest,如果同时要有多个,我宁愿直接输出HTML.待用户确实需要再次请求时再生成XMLHttpRequest,可以用一个XMLHttpRequestManager去管理的XMLHttpRequest,防止无用请求.
是否要考虑多个XMLHttpRequest实例,因为考虑到回调函数的线程安全问题?它本身支持多线程的,为了加快加载速度,我们当然要考虑多个实例。回调函数的线程安全问题应该是不需要考虑的,你需要处理的是回调函数处理同一个对象时有否有冲突这个问题。
下面的代码是保持一个XMLHttpRequest对象,但是当多个请求发送是,每个请求的返回时间是不确定的,
当其中一个请求返回时,系统如何知道调用那一个回调函数????function getXMLHttpRequest(){
var req;
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
return req;
}var XML_HTTP_REQUEST=getXMLHttpRequest();
function executeXhr(callback, url) {
req = XML_HTTP_REQUEST;
req.onreadystatechange = callback;
req.open("GET", url, true);
req.send(null);
}
function callback1(){
//这里省略了判断请求完成的语句
alert("this is func1");
}function callback2(){
//这里省略了判断请求完成的语句
alert("this is func2");
}
function test(){ executeXhr(callback1,"www.google.com");
executeXhr(callback2,"www.google.com");
//executeXhr(callback3,"www.google.com");
//..........................
}