GaoWhen高H温

「文不能测字 武不能防身」

Javascript的私有成员

2009-03-23 21:54:17

对象

Javascript 根本上是和对象相关的。数组是对象。函数是对象。对象是对象。那什么是对象呢?对象是名-值对的集合。名是字符串,值可以是字符串,数字,布尔值或者对象(包括数组和函数)。通常对象是像哈希表一样执行地,这样便于值地快速检索。

如果值是函数,我们可以认为这是一个方法。当一个对象地方法被调用的时候,this 变量就设置为这个对象。方法就可以通过 this 变量来访问实例变量。

对象可以由用来初始化对象的构造函数生成。构造函数提供了其他语言中类所提供的特性,包括静态变量和方法。 公共

对象的成员全部是公共成员。任何函数都可以访问、修改或者删除这些成员,或者增加新成员。有两种向新对象中添加成员的方法: 在构造函数中添加

这个技术通常用于初始化公共实例变量。使用构造函数的 this 变量向对象中添加成员。

这样,如果我们创建一个新对象:

<textarea class="code" rows="10" cols="50">var&nbsp;myContainer&nbsp;=&nbsp;new&nbsp;Container('abc');</textarea>

这样 myContainer.member 就包含 ‘abc’ 了。 在原型中添加

这个技术通常用于添加公共方法。当一个成员被检索并且没能在对象本身里面找到时,就要从对象的构造函数的原型成员里面寻找。原型机制是用于继承的。也用于节省内存。向一个构造函数生成的所有对象中添加一个方法,只需要向构造函数原型中添加一个函数:

<textarea class="code" rows="10" cols="50">Container.prototype.stamp&nbsp;=&nbsp;function(string){

    return this.member + string;   }

因此,我们可以调用这个方法:

<textarea class="code" rows="10" cols="50">myContainer.stamp('def')</textarea>

结果为 ‘abcdef’。 私有

私有成员是由构造函数生成的。一般构造函数的变量和参数都是私有成员。

<textarea class="code" rows="10" cols="50">function&nbsp;Container(param){

    this.member = param;     var secret = 3;     var that = this;   }

这个构造函数生成了3个私有实例变量:param,secret 和 that。它们和对象相关联,但是它们不仅在函数外边不可访问,而且对对象自身的公共方法来说也是不可访问的。它们只可以被私有方法访问。私有方法是构造函数的内部函数。

私有方法 dec 检查 secret 实例变量。如果它大于零,将其减一并返回 true。否则返回 false。它可以用作限定对象使用3次。

按照习惯,我们设置了一个私有的 that 参数。它使得这个对象对于私有方法使可见的。在 ECMAScript 语言规范中,这是一个可行的错误,它使得 this 对于内部函数被不正确地设置。(This is a workaround for an error in the ECMAScript Language Specification which causes this to be set incorrectly for inner functions.)

私有方法不能被公共方法调用。要想使得私有方法有用,需要介绍一下特权方法。 特权

特权方法可以访问私有变量和方法,并且其自身对于公共方法和对象外部都是可访问地。可以删除或者替换一个特权方法,但是不能改变它,或者强迫它泄密。

特权方法是在构造函数内使用 this 指定地。

service 就是特权方法。前三次调用 myContainer.service() 时会返回 ‘abc’。之后返回空(null)。service 调用了可访问私有变量 secret 的私有方法 dec。service 对其他对象和方法都是可见的,但是不能直接访问私有成员。 闭包

由于 Javascript 有闭包,因此这种公共,私有和特权成员模型时可以的。这意味着内部函数总是可以访问它外部函数的变量和参数,甚至在外部函数返回后也可以。这是这个语言一个非常有用的特性。目前没有任何关于 Javascript 编程的书描述了如何利用它。大部分甚至都不提及它。(糖伴西红柿说,这是2001年的文章,当时估计还没有这方面的研究文章。现在来说,犀牛书等都有涉及,javascript 的难点之一啊。)

私有和特权成员只在对象被创建时生成。公共成员可以随时添加。 模式 公共

私有

注意:函数语句

的缩写。 特权

糖伴西红柿说:

好久没露面,本来就没人记得我,这次更无名了。最近从高丽迁移回了天朝,嗯。而且正在为了工作进行最后的充电活动。生活中同时也遭遇到电视剧情节,还是高丽电视剧。这两天在主攻 Javascript 中几个比较难的知识点,闭包算是其中之一。两天看了好多关于闭包的文章,才有点开窍,这篇文章属于其中之一。算是个额外的参考资料,主要的是另一篇英文文章,有打算全篇翻译。

原文地址:http://www.crockford.com/javascript/private.html 译文地址:http://www.qianduan.net/?p=6580

再见理想,再见Beyond

2008-06-30 15:53:57

满怀理想的家驹辞世15年后,所谓的娱乐圈依然只有娱乐没有乐队

[CSS]position:static|relative|absolute|fixed

2007-05-12 15:15:45

1.相对定位|relative 相对于元素在文档流中的初始位置。 相对定位的元素占据文档流,属于普通流定位模型的一部分,对一个元素进行相对定位,这个元素相对于它的起点(即在文档中的位置)进行移动top/left/right/bottom。使用相对定位时,无论是否进行移动,元素仍占据原来空间,移动元素会导致覆盖其他框。 2.绝对定位|absolute 相对于最近的已定位的祖先元素。 绝对定位使元素与文档流无关,不占据文档空间。普通流中的元素会表现的好像绝对定位的元素并不存在一样。绝对定位的元素的位置相对于最近的已定位的祖先元素。若元素没有已定位的祖先元素,那么元素的位置相对于最初的包含块,依据浏览器不同,最初包含块可能为canvas或者html元素。 何谓 已定位的祖先元素(包含块) ? Take a look at what the CSS 2.1 specification has to say about containing blocks: If the element has ‘position: absolute’, the containing block is established by the nearest ancestor with a ‘position’ of ‘absolute’, ‘relative’ or ‘fixed’ ... If there is no such ancestor, the containing block is the initial containing block. 祖先元素(包含块)是指具有position:absolute|relative|fixed的祖先元素

3.固顶定位|fixed 属于绝对定位的一个子类,包含块是viewport。

理论永远是枯燥的,以下上我学习时写得例子。就像我说的,这是我学习时写的例子,所以,样子可以说是奇丑无比,以至于我都不愿意把它丑陋的样子展示出来,所以,以下只给除html以及css的源代码。

default.html

`<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="zh-CN" xml:lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="Author" content="" /> <link href="style.css" rel="stylesheet" type="text/css" media="screen" title="position" /> <title>Position example</title> </head>

<body>   <div id="content">          <div id="myBox0">myBox0</div>     <div id="myBox1">myBox1       <div id="myBox6">myBox6</div>       </div>     <div id="myBox2">myBox2       <div id="myBox5">myBox5</div>     </div>     <div id="myBox3">myBox3</div>     <div id="myBox4">myBox4</div>     <div id="myBox7">myBox7</div>        </div> </body> </html> `

style.css

`*{   margin: 0;   padding: 0; } body{   text-align: center; }

content{

  width: 800px;   height: 100%;   margin: 0 auto;   background: Fuchsia;   text-align: left; }

myBox0{

  width: 200px;   height: 300px;   background: red; }

myBox1{

  position: relative;   left: 20px;   top: 20px;   width: 100px;   height: 200px;   background: Aqua; }

myBox2{

  position: absolute;   left: 20px;   top: 20px;   width: 200px;   height: 300px;   background: yellow; }

myBox3{

  position: static;   width: 300px;   height: 400px;   background: orange; }

myBox4{

  position: fixed;   top: 100px;   right: 300px;   width: 100px;   height: 50px;   background: #fff; }

myBox5{

  position: absolute;   left: 20px;   top: 80px;   width: 120px;   height: 30px;   background: blue; }

myBox6{

  position: absolute;   left: 20px;   top: 80px;   width: 120px;   height: 30px;   background: green; }

myBox7{

  position: absolute;   left: 120px;   top: 180px;   width: 50px;   height: 50px;   background: black; } `

[CSS]Mozilla建议的CSS书写顺序

2007-05-07 18:51:03
  • mozilla.org Base Styles
  • maintained by fantasai
  • (classes defined in the Markup Guide - http://mozilla.org/contribute/writing/markup) / / Suggested order: //显示属性
  • display
  • list-style
  • position
  • float
  • clear //自身属性
  • width
  • height
  • margin
  • padding
  • border
  • background //文本属性
  • color
  • font
  • text-decoration
  • text-align
  • vertical-align
  • white-space
  • other text
  • content * */

留学生回国学历公证【国外学历认证】流程

2007-03-01 14:35:43

毕业回国半年多了,毕业证一直在俄罗斯耽搁着没拿回来,想想我还觉得头疼。。。当初本以为毕业就万事大吉了,可一遍遍的对成绩改成绩折腾完,再到发毕业证,发成绩单。。。眼看着签证就到期了,可还有个更加。。。必须要办的公证等在后头呢。。。交完钱,委托完,再一看。。。8月中旬反馈回来!妹妹我的签证才到8月1号呢!傻眼了吧。。。没办法之下只有交托给姐妹打理,小春我义无反顾的就空手回国了!折腾来折腾去的,毕业证前几天才刚刚回自己手上,想起来还要办这么多麻烦的手续,我就烦的不行,可也没有办法啊,不再公证谁承认你啊! 以方便大家为目的,小春简单的说一下各个公证的流程, 先说在俄罗斯如何办理各个手续,然后是回国后的公证(在其他国家学习的朋友可根据情况直接看回国后部分): 1。在俄罗斯读大学是要有预科系的,要记住,预科的毕业证也是非常重要的,在回国公证时要用到!如果没有,那俄语1级的证书可代替预科毕业证。 2。进入大学以后要尽早到教育部报到,登记成绩,留底等,大学四年至少要报到2次,不可以在大四时一次性登记所有成绩!这是为了防止假成绩,假毕业证。 3。办理学历公证。这里的学历公证是你在国内的最后学历的公证。譬如,你在国内是高中毕业出国读大学,则需要公证你的高中毕业证。你在国内是大学毕业出国读研究生,则需要公证你的大学毕业证。以此类推。。。这里要说明,通常我们在出国前已经做过各种公证,可俄罗斯的新规定是必须要在他本国再次公证的,不然拿不到《留学回国人员证明》。 4。拿到毕业证和成绩单后,带同"第3步"所说的学历公证(全部原件)以及护照翻译件(制定部门翻译)到俄罗斯外交部办理学历认证。 5。带同所有文件到我国驻外教育部领取《留学回国人员证明》。 6。买机票,火车票,船票,等等票回国!

回到我们伟大的祖国,等待我们的还有漫漫的公证路! 留学生回国学历公证流程: 1。登录国(境)外学历学位认证系统预审。 2。到选定的验证点交验申请材料并缴纳认证费 申请人在网上提交申请表后,一般将在2个工作日(双休日及国家法定节假日除外)内收到系统通过e-mail方式发送的预审结果通知单。收到“通过预审”通知单的申请人须按照通知单内容准备相关材料,尽快持申请材料原件及一套复印件到选定的验证点交验完整的申请材料,扫描申请人照片和国(境)外学历学位证书原件,缴纳认证费用。

学人员国外学历学位认证申请须递交以下材料:

  • 一张二寸或小二寸证件照片(黑白或彩色半身免冠);

  • 本人留学期间护照(签证记录及出入境记录须全部复印;若护照已上交,请有关单位开具证明);

  • 在国外获得的所有学位证书或高等教育文凭正本(含需认证的学位证书或文凭正本的翻译件原件);

  • 在国外学习期间所有正式成绩单(含翻译件原件);国外研究学位获得者,如无成绩单,需提供学校开具的相关研究证明;

  • 中国驻外使(领)馆开具的《留学回国人员证明》;

  • 硕士以上(含硕士)学位获得者, 交验毕业论文原件,并提供论文目录及摘要;

  • 出国前最后学历证明(国外硕士学位获得者,如入学前学历为大专,须提交入学前全部工作经历证明;博士学位获得者,如入学前学历为硕士研究生(不含硕士研究生)以下,须提交入学前全部工作经历证明或职称证书)。 注: 所有文字材料均须交验原件并提交一套复印件; 者所提供的外文材料,如学位或文凭证书正本、留学期间成绩单(研究学位获得者出示的相关研究证明)等须经专业性涉外翻译机译,申请者本人翻译无效; 3。领取认证结果。

详细大家可登陆国(境)外学历学位认证系统http://renzheng.cscse.edu.cn 或者登录中国留学网http://www.huiguo.cn查询。。。

祝大家好运气!