百度首页 | 百度空间
 
文章列表
 
您正在查看 "javascript&web2.0" 分类下的文章

2007年10月23日 星期二 上午 08:51
代码
function test(){alert(a); alert(b); return 123; function b(){}var a=b }
test()
所有浏览器都是undefined和函数b,没问题,因为var function预处理,但是代码
function test(){alert(a); alert(b); return 123; var a=function b(){} }
test()
function放到=后面影响其预处理,改为后处理,safari opera ff第二次都显示引用错误,但是总语出惊人的ie又一次个别了,还是预处理function b,显示出b函数,看来ie管理内存,闭包性能差不是空穴来风
类别:javascript&web2.0 | 评论(0) | 浏览()
 
2007年10月22日 星期一 下午 07:45
Ext.namespace可以支持比较安全的创建空对象(模拟namespace)但是不满其eval连接字符串,window[]不就可以了,给它改了,如下:
Ext.namespace=function () {
var a = arguments, o = null, i, j, d, rt;
for (i = 0; i < a.length; ++i)
{
d = a[i].split("."); rt = d[0];
if (typeof window[rt] == "undefined")
   { window[rt] = {}; }
o = window[rt];
for (j = 1; j < d.length; ++j)
{
o[d[j]] = o[d[j]] || {};
o = o[d[j]];
}
}
}
类别:javascript&web2.0 | 评论(0) | 浏览()
 
2007年10月20日 星期六 下午 07:18

最近特别衰,虽然js进步很大,但是都是从各种奇怪诡异问题当中进步,郁闷呀,就好象当年学习closure,看一个人写的跨frame closure代码,研究了一星期,才大概明白什么是closure一样%^&*()%$#,虽然很多人压根永远不明白closure^_^,好,开始介绍firebug的bug,话得从最近对于js原形链认识大进开始,最近对于js双链prototype chain和scope chain认识都有了飞跃,但是firebug却打击我,原形链在构造函数时有显示的prototype属性可以修改,但是构造函数一旦实例化为实际对象后,实例化对象的隐式原形链就不可见了,当然我们伟大

类别:javascript&web2.0 | 评论(4) | 浏览()
 
2007年10月18日 星期四 下午 03:17
以前我在javaeye上面发表过一偏列举C++与js区别的文章,当时水平还比较低,一些问题没有分析到点子上,最近拜读了lichray hax各位朋友大作,以及自己对js的两链(原形链和函数变量作用域链)以及lamda算子(function(){})以及动态函数上下文的认识逐渐清晰,现再写一偏介绍js与c++的文
c++不用说,就是从c来的,开始叫c with class(带类的c),突出的就是类,类就是构造对象的描述,包括3p(public private protected)打开了OO世界大门,从此所有类语言的信徒就相信OO==class,相信只有class才能够OO,那class的特点也很鲜明,比如clas
类别:javascript&web2.0 | 评论(0) | 浏览()
 
2007年10月18日 星期四 下午 03:17
firebug绝对典型的黑客工具,可以动态修改html,可以动态执行JavaScript,可以动态干很多事情,比如最近很流行的所见既所得的html编辑器,这种编辑器一般是不提供直接编写html功能的,因为那样毕竟不是太安全,web上面就不能信任任何web提交,比如今天我拿javaeye开刀,测试其html编辑器,打开后,直接找到所见所得的iframe(以前我也奇怪所见所得编辑器是怎么弄的,其实就是个iframe,里面所有你看见的都是动态添加的html元素,最后直接提交document.dovumentElement.innerHTML这个样子),右键点击body元素,edit html...太牛了,想写吗就
类别:javascript&web2.0 | 评论(0) | 浏览()
 
2007年10月18日 星期四 下午 03:16
话说js支持两大链,原形链和变量作用域链,原形链包括显示和隐式,显示就是function的prototype对象,隐式就是实例化对象的隐式proto继承原形,简单来说
function a(){}
a.prototype.c=123
b=new a
这样b就隐式继承了a的c属性,隐式在ecma标准当中的关系是不允许更改的,ie opera什么的也都是这么实现的,但是JavaScript的祖先,也就是SpiderMonkey这个最早的js解释器其实提供了__proto__这样的隐式原形对象属性,比如,上面代码就是
b.__proto__==a.prototype
很容易明白吧
mozilla还有一个js解释器叫Rhin
类别:javascript&web2.0 | 评论(0) | 浏览()
 
2007年10月17日 星期三 下午 04:23
浮点到底多精确,曾经以前听人讲座,说java内部数字未必那么精确,我还一直认为js就一定非常精确,今天看来未必
(100.55).toFixed(20)
ie下面确实是100.55000000000000000000
但是ff下面可就有意思了
是"100.54999999999999715783"
又拿出来rhino一看结果也是"100.54999999999999715783",看来就是传说中的不精确,其他呢ff3.0也是一样,opera9.23也是"100.54999999999999715783"这个结果,只有safari3.03和ie是一样的,就是100.5500000000000000还有更决的
(100.55).toFixed(1)猜猜是什么结果
ie 100.6 ope
类别:javascript&web2.0 | 评论(0) | 浏览()
 
2007年10月17日 星期三 下午 01:36
如果现在有个数组,比如
a=[ [54,5,456,6,89], [12,51,515,32,15],[98,45,68,24,6] ];
现在要变成一个3行5列的表格,要拼个html,你可能很快想到的是拼串,但是我说不,看我怎么实现的
当然为了实现函数式编程,少不了需要调用map invoke等方法,默认引入Prototype库
我会首先添加一个原形方法
Object.prototype.wrapNode=function(tag){return "<"+tag+">"+this+"</"+tag+">"}
这个方法能够实现拼出来任何html元素的html文本,下面开始写代码,首先创建td
temp=a.map(function(node){return no
类别:javascript&web2.0 | 评论(0) | 浏览()
 
2007年10月16日 星期二 下午 09:34
近来看到了关于什么函数式编程,非常震撼,具本菜鸟体会大概就是流思想,动态创建方法,说错了各位大哥不要发怒,有个什么lamda算子,我看例子自己写了个实现
String.prototype.lamda=function(){var temp=new Function("x","y","return "+this);return function(x,y){return temp(x,y)}}
可以支持这样
>>> "x+y".lamda()(1,2)
3
>>> "x*x*x+y+y+x+x".lamda()(9,10)
767
大概算是函数式编程吧,大概只有js这种动态函数对象的语言才可以这样吧
类别:javascript&web2.0 | 评论(1) | 浏览()
 
2007年10月16日 星期二 下午 06:05

JavaScript由于对象使用原形继承,原形链只能有一条,所以一般不能实现多继承,就算是多继承,也是把别的构造函数内容拿过来,修改一下context在原来构造函数基础上继续执行,我写了个自认为可以实现多继承的函数

代码
  1. Object.extend = function(destination, source) {   
  2.   
类别:javascript&web2.0 | 评论(0) | 浏览()
 
     
 
 
文章分类
 
 
 
 
工作(21)
 
其他(38)
 
Java(1)
 
 
 
Css(1)
 
     
 
文章存档
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
     
 
最新文章评论
   

一个学会了批评和自我批评的人.
 

.....上面这位仁兄是who啊?
 
 
 
 
     


©2008 Baidu