伟大的墙其实是一种悲剧

终于晓得为什么mail.vilic.info进不去了,原来是GFW封了google的域名,ghs.google.com,或者ghs.l.google.com。国民的悲剧。

等我到了大学,一定要好好地,努力地学英语,早点逃开这封建王朝。

伟大的墙,还有伟大的CN,我同情你们。珍爱生命,远离CN。

一点思考

昨天突然想到一件事,为什么Longbill在和我一个年龄的时候做得比我好,我觉得显然不是技术问题,而是作品的实用性,也就是用户群的问题。

他的第一个作品是Longbill文件管理器,好像先后发布了4个主要版本,受到了广大站长的好评,而我的同类作品AIVOS最终也没有发布,Prever Start也只是一个概念性作品。所以我希望下一个作品,是一个能够迎合用户的作品。

好好规划,半年后开战!

JS在IE和FF中的语法兼容

在前端开发的浏览器兼容工作中,我觉得主要分为CSS样式兼容和Javascript脚本兼容,而脚本兼容又分为浏览器实现的兼容和语法本身的兼容,下面我会对我所了解的JS在不同浏览器中语法的细小差别做一个归纳。

一、函数声明
函数声明(姑且这样说)有两种方法:
function abc(){};
var abc=function(){};
这两个都是通用的,只是效果有些许不同,但试想下面一种情况:
var obj={};
//直接赋值一个函数
obj.abc=function(){};
//用function关键字声明
function obj.abc(){};
这两种写法都能正确的在IE中运行,但第二种却无法在FF中使用,于是,兼容的做法就是使用第一种。

二、函数的嵌套
有时我们会把函数嵌套在if语句中,虽然我不知道这是不是一个坏习惯,但它在不同的浏览器中的确存在不同。一般情况下,如果我们使用function关键字来声明一个函数,它似乎会在一开始就完成初始化,所以我们可以在前面的代码里使用后面的函数,但函数写在if里呢?惨痛的调试经验告诉我,FF不会在if中优先初始化,也就是说,在FF的if中,function关键字声明的函数等价于var声明的函数,它们会逐语句执行。这时如果把要用到的函数写在了后面,就会不幸地报错了。不过在IE里,它是允许的。兼容的方法也就是将函数写在前面,或者写在if之外。

额,写完了才发现都是关于函数的,等我搜索完我的脑袋,要是还有就再加。

QQ空间克隆中…

最终,仍然没有找到直接克隆QQ空间的方法,所以只有舍近而求远,借网易博客一用~
方法也是很简单的,先激活一个网易博客,把QQ空间复制过来,提交申请后,待完成拷贝,再到QQ空间的搬家工具上,把网易博客的再复制一遍。
总算是大体搞定了,可以放心的用新号码,呵呵。

我感觉到原创的力量了

原来做V-NS建站资源的时候,虽然也有原创文章,但数目相对比较少,Google、百度收录得也比较慢,巅峰时期也就接近200的样子。现在博客里几乎全是原创文章,这才开博没多久,Google就收了40篇了(百度依然不甩我)。也不知道是程序问题(原来那个是自己写的)还是原创的力量…非常好的势头,我得再接再厉!

昨天在网吧弄东西,主要是转QQ那事,要换邮箱(之前用的QQ域名邮箱),但是注销域名邮箱后7天之内同一个域名不能再次注册,就顺便玩了下Google的企业套件,原来的那个恶心的两个字母结尾的域名一直用不了。不知道Gmail有广告没。现在把Microsoft、Google和腾讯的域名邮箱都用过了,有空这个比较。

祝快乐!

JS类的技巧 在初始化对象前添加属性

写Prever Start的时候,曾遇到过这样的问题,就是通过new关键字实例化一个对象,却希望它的原型在运行之前能具备一些外来的属性,可惜的是像这样:

var obj=new myClass();

只有一个语句,怎么添加这些属性呢?

这个我们需要从JS中类实例化的实现原理上来讲了(声明,我也只是听说,但的确管用)。听群里的高手说,上面的那个语句就等价于

var obj={};
myClass.call(obj);

我就不解释意思了,很明显的,两个代码之间的间隔给我们的操作提供了可能。

var obj={};
//在这里添加,如:
obj.ID=123;
myClass.call(obj);

不过我想一般可能用不到这样的写法,但既然曾经用到过就有它的价值,在此分享下。

JS中对象的表示方法

Javascript作为一个脚本语言,因为它的灵活性,可以用很多写法来达到同样的目的,现在我想说下接触Javascript以来所了解的对象的表示方法。

方法一

var obj=new Object();

Object貌似是JS中所有对象的原型,像上面这样的方法也最直接。众所周知的,它还有另外一个等价的写法。

方法二

var obj={};

不过它有更强的扩展性,这也是JSON的基础:

var obj=
{
Name:”Object”,
Age:0,
SayHello:function(){alert(“Hello!”);}
};

貌似很多类库的书写和对象的初始化都是使用的这种方式,但有时候,我更喜欢另一种建立在类的基础上的方法(不知道是否是原创的)。

方法三

var obj=new function()
{
this.Name=”Object”;
this.Age=0;
this.SayHello=function(){alert(“Hello!”);};
}();

从上面的例子很难看到这个方法的优点,但假如说我们这个对象里需要私有变量,或者需要有被内部多次使用的函数时,它就十分有用了。

当然,好用与否不是绝对的,根据需要选择才是王道。

发现Xplore用中心那个确认键可以换行

为什么,为什么,用了那么久,我到现在才发现…
截止目前,用手机(传统键盘)一共写了大概三个JS小程序,其中一个是用LightNote写的小画板,觉得写得不错,调色板比较强,因为写了个渐变色的小功能。一个是贪食蛇,可以穿墙哦!这个还是同学提的意见。开发过程中还特意保存了一版,因为没有写游戏结束的条件,所以永远不死,我叫它不死版。还有一个是这两天写的一个飘雪效果,前面有文章,就不说了。后面两个都是用Xplore写的,但是直到今天,我才在无意中发现,原来可以这样…同志们可以想象,我是如何输入那一个又一个换行符的(其他符号我就不提了)…