omiga

简单就好

javascript的赋值

4条评论»
var a = "hello,world!";
var b = a;
a = "hello,omiga~";
alert(a); // "hello,omiga~";
alert(b); // "hello,world!";
//--------------------------
var c = 5;
var d = c;
c++;
alert(c); // 6
alert(d); // 5
//--------------------------
var e = true;
var f = e;
e = !e;
alert(e) // false;
alert(f) // true;
//--------------------------
var i = null;
var j = i;
i = !null;
alert(i); // true
alert(j); // null
//--------------------------
var m = [1,2,3,4,5];
var n = m;
m.push(10);
alert(m); // [1,2,3,4,5,10]
alert(n); // [1,2,3,4,5,10]
n.pop();
alert(m); // [1,2,3,4,5]
alert(m); // [1,2,3,4,5]
//--------------------------
var s = {"name":"omiga","url":"http://omiga.org"};
var t = s;
s.name = "wondger";
alert(s.name); // "wondger"
alert(t.name); // "wondger"
t.name = "omiga";
alert(t.name); // "omiga"
alert(s.name); // "omiga"

运行代码

结论:javascript中变量的赋值根据数据类型而采用不同的赋值方式。对于数组类型,对象类型采用引用赋值;而对于其他数据类型采用按值赋值(重新分配内存)。这是一个错误的结论,请看下文。

PS:将一个变量的值赋给另外一个变量,当然是将其引用进行赋值,不会重新申请内存空间。比如:首先声明的变量a=”hellow,world!”,假设分配内存空间“12345”,那么b=a后,b也指向“12345”的内存空间。但是a=”hello,omiga~”语句会重新为值”hello,omiga~”分配内存“23456”,a也重新指向“23456”,b却依然指向“12345”。但是以上代码中的数组和JSON为什么并没有随其值得改变而改变?因为数组和JSON都只是改变的其内的元素/属性,只是对内存进行了重写,而未重新分配内存,仍然指向同一内存,故会有以上测试结果。我们可以测试为其重新分配内存的情况。

var m = [1,2,3,4,5];
var n = m;
m = [1,2,3,4,5,10];
alert(m); // [1,2,3,4,5,10]
alert(n); // [1,2,3,4,5] 重新分配内存后m和n指向不同的内存空间,彼此不再影响
n.pop();
alert(m); // [1,2,3,4,5,10]
alert(n); // [1,2,3,4]
//--------------------------
var s = {"name":"omiga","url":"http://omiga.org"};
var t = s;
s = {"name":"wondger","url":"http://omiga.org"};
alert(s.name); // "wondger"
alert(t.name); // "omiga" 重新分配内存后t和s指向不同的内存空间,彼此不再影响
t.name = "omiga_w";
alert(s.name); // "wondger"
alert(t.name); // "omiga_w"

运行代码

Google Chrome

发表评论»

以下为谷歌的官方博客声明

我们通过漫画形式提前发布了一款开源浏览器Google Chrome,相信大家已经通过博客渠道了解到该消息。周二,我们将在全球100多个国家推出Google Chrome测试版。

为什么要开发Google Chrome呢?因为我们相信它能给用户带来更多价值,同时有利于推动Web创新。

在谷歌,大量的工作都是通过浏览器进行的,搜索、聊天、收发邮件和协同开发等。在空闲时间,我们通过浏览器购物,登录网络银行,读新闻,与好友交流等。每天花费在浏览器上的时间如此之多,我们不得不考虑什么样的浏览器最适合当前的Web发展趋势。如今,网页已经从简单的文本页面发展到富媒体页面,这就需要我们重新设计网络浏览器。我们真正需要的不仅仅是一款浏览器,而是一个现代化的网页及应用平台。这就是我们开发Google Chrome的初衷。

从外观即可看出,Google Chrome的设计简单、高效,是一款真正的Web浏览工具。与谷歌主页一样,Google Chrome的特点是简洁、快速。

Google Chrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。Google Chrome基于更强大的JavaScript V8引擎,这是当前Web浏览器所无法实现的。

当然,这只是一个开始,Google Chrome在很多方面还需要进一步完善。此次,我们即将推出的是Windows下的测试版本,供大家讨论,我们也希望能够得到用户的反馈。目前, Mac和Linux版本尚在开发之中,同样将秉承快速、高效的特点。

Google Chrome是一款开源软件,借鉴了苹果的WebKit、Mozilla的Firefox及其他相关应用。同样,我们也将开放Google Chrome的全部源代码。我们期望与整个开源社区合作,共同推动Web创新。

Google Blogoscoped描述了这款浏览器的主要特征:

  • Chrome浏览器基于开源的Webkit,其中包含谷歌Gears。
  • Chrome提供了浏览器扩展框架,可以制作与Adobe-AIR类似的混合应用。
  • 包含V8 Javascript虚拟机,这个多线程的虚拟机可以加速Javascript的执行。
  • 标签式浏览、自动完成,浏览器有一个侧边栏类型的启动页面,帮助用户直接链接到需要的网站。Opera具有类似功能。
  • 具备隐私模式,可以让用户无需在本地机器上登录即可使用,这个功能与微软最新版本IE中的Incognito类似。
  • 浏览器将内置防止“网络钓鱼”及恶意软件功能。

相关链接:
  http://blogoscoped.com/archive/2008-09-02-n72.html
  http://blogoscoped.com/archive/2008-09-01-n47.html

不可能完成的任务

5条评论»

唉,我怎么会认为它是不可能完成的任务呢~···

要求:1.完成如上布局;2.#main宽度自适应;3.代码顺序#header、#main、#sidebar、#footer。

如果#sidebar能放在#main前面当然就非常简单了~···但是不可以~···

最终解决方案:(查看演示

<!--css-->
#header{height:80px; background:#CCC;}
#center{overflow:hidden; zoom:1;}
#main_wrapper{float:left; width:100%; margin-top:10px; margin-left:-210px;}
#main{height:400px; margin-left:210px; background:#999;}
#sidebar{float:right; width:200px; margin-top:10px; height:450px; background:#AAA;}
#footer{height:50px; margin-top:10px; background:#CCC;}
<!--css-->
<!--xhtml-->
<div id="center"></div>
<!--xhtml-->

囧~···鸡蛋,白菜,鞋底板~···来的更猛烈些吧~···

还有其他方法么?欢迎补充~···

BTW:来两个三列的12