JavaScript变量作用域回顾

2010.04.08 / 标签: / 分类: JavaScript
Sofa

JavaScript变量作用域一文完全基于JavaScript代码词汇结构的定义:全局变量有全局作用域,函数中声明的变量拥有局部作用域。如果一个函数被嵌套在另一个函数中定义,那么该函数中声明的变量就有嵌套的局部作用域。 阅读全文>>

JavaScript变量与对象属性

2010.04.06 / 标签: / 分类: JavaScript

声明:本文系本人为学习英语及JavaScript基础而翻译《JavaScript The Definitive Guide》第五版,均为个人理解,略有删改,切勿完全信以为真,走火入魔。因本文引起的一切后果,读者自负,与本人无关。

你很可能已经注意到JavaScript的变量和对象属性有很多相似处。它们以同样的方式被赋值,以同样的JavaScript表达式来使用,等等。难道变量i与对象o的属性i之间真的不存在任何根本性差异吗?答案是,JavaScript中的变量与属性从根本上都是一致的。 阅读全文>>

JavaScript变量作用域

2010.04.02 / 标签: / 分类: JavaScript

声明:本文系本人为学习英语及JavaScript基础而翻译《JavaScript The Definitive Guide》第五版,均为个人理解,略有删改,切勿完全信以为真,走火入魔。因本文引起的一切后果,读者自负,与本人无关。

变量的作用域取决于它在程序中被定义时的位置。一个全局变量就有全局作用域;它在你的JavaScript代码的任何地方都是可见的。换句话说,被声明在函数体中的变量,它只存活于该函数体中,它是局部变量,作用域也是局部的。函数参数也同样是局部变量,被定义在函数体中。 阅读全文>>

JavaScript原始数据类型包装对象

2010.04.01 / 标签: / 分类: JavaScript
Sofa

声明:本文系本人为学习英语及JavaScript基础而翻译《JavaScript The Definitive Guide》第五版,均为个人理解,略有删改,切勿完全信以为真,走火入魔。因本文引起的一切后果,读者自负,与本人无关。

JavaScript中的字符串有一些奇怪的特点:操作字符串时,可以使用对象操作符。先看一段简单的字符串操作代码: 阅读全文>>

打印Ext组件中的内容

2010.01.08 / 标签: ,, / 分类: ExtJS

描述一下大概功能需求:从Ext的GridPanel中选择一条记录,将这条记录的详细信息呈现在Ext的Window当中,将Window中呈现的数据按其格式用打印机打印出来。 阅读全文>>

Ext代码优化并减少编码量

2009.09.01 / 标签: ,, / 分类: ExtJS

Ext做的项目里经常要将几个组件合起来做成一个具有某一功能的组件,而且这样的功能组件会在很多地方以不同的形式被应用。例如一个带数据分页功能的Grid,就至少需要JsonStore(也会是其它的)、PagingToolbar及GridPanel这三个组件,它们所构成的组件是非常常用的,最大不同应该就是所要呈现的数据了。 阅读全文>>

frame与frame之间如何用JavaScript传值

2008.10.06 / 标签: ,,, / 分类: ExtJS

这个依然是为我的项目而服务的,因为项目的功能需要此技术来实现,或许对很多人来说这个不难,可是对我这个不太对JavaScript感冒的人来说就不是那么容易了,办法只有一个:找资料现学呗。

先来了解一下相关知识:要实现框架中多窗体的不同元素的访问,则必须使用window对象中的Frames属性。Frames属性同样也是一个数组,它在父框架集中为每一个子框架设有一项。通过下标实现不同框架的访问:
parent.frames[Index1].docuement.forms[index2]
通过parent.frames.length确定窗口中窗体的数目。除了使用数组下标来访问窗体外还可以使用框架名和窗体名来实现各元素的访:
parent.framesName.document.getElementById()
OK,这么点资料就够用了,我们来小试一把。首先创建一个theFather.html,其代码如下:

 
  1. <html>
  2. <head>
  3. <title>frame get Value test</title>
  4. </head>
  5. <iframe frameborder="1" height="78" marginheight="0" marginwidth="0" scrolling="no" width="100%" src="theSon.html"></iframe>
  6. <h3>这是theFather的文本框</h3>
  7. <input type="text" name="txtFather" id="txtFather" />
  8. </html>

 

接下来创建theSon.html,其代码如下:

 
  1. <html>
  2. <head>
  3. <title>the son frame</title>
  4. <script type="text/javascript">
  5. //此方法用于向其父文本框类赋值
  6. function setValue(){
  7.   
  8.   //获得子类文本框中的值
  9.   var sonValue=document.getElementById("txtSon").value;
  10.   //弹出信息,此处仅用于测试
  11.   alert("theSon的值为:"+sonValue);
  12.   //向父类文本框赋值
  13.   parent.document.getElementById("txtFather").value=sonValue;
  14. }
  15. </script>
  16. </head>
  17. <body>
  18. <h3>这是theSon的文本框及按钮</h3>
  19. <input type="text" name="txtSon" id="txtSon" />
  20. <input type="button" name="btnSon" id="btnSon" value="提交" onclick="setValue();" />
  21. </body<
    span class="tag">>
  22. </html>

 

接下来运行测试,达到了预期的效果,现在可以正式融入项目中了。

 

javascript对象模型

2008.05.08 / 标签: / 分类: ExtJS
Sofa

基于类的面向对象的语言,如 Java 和 C++,建立于两个不同的实体概念之上:类(classes)和实例(instances)。 一个类定义所有的描述对象集合的属性(如 Java 中的方法的域,以及 C++ 中的成员及属性),它是个抽象的东西,不象对象所描述的特定成员; 一个实例是类的实际表现(题外话:如果您了解 FLASH 的话,那么这好象是 Symbol 和 Instance 的关系),即是它的成员。

   基于原型的语言如 JavaScript,没有这种区别,它只具有对象。一个基于原型的语言具有原型对象的概念,一个对象是一个模板,它为一个新对象提供最初的属性。任何对象都可以指定它自己的属性,不管是您创建的还是在运行时的。另外,任何对象都可以同另一个对象联合为一个原型,允许第二个对象分享第一个对象的属性。 定义一个类  在基于类的语言中,类的定义是在一个单独的类定义中进行,在类定义中您可以指定其特有的方法,称为构造函数来创建类的实例。一个构造函数可以为实例的属性指定初始值并在其创建时执行其它初始化工作。您可以用 new 操作符来动态地用构造函数创建类的实例。

  JavaScript 具有类似的模型,但没有与构造函数分离的类定义,而是定义一个构造函数来创建具有特定属性及其值的集合的对象。任何 JavaScript 函数都可以用作构造函数,您可以用 new 运算符和构造函数来创建一个新对象。 子类和继承  在一个基于类的语言,您可以通过类定义创建一个类的层次;在类定义中,您可以指定一个新类是一个已存在的类的子类。子类继承了父类的所有属性并可以有自己特定的新属性或修改它继承的属性。例如辅乳动物类有两个属性:会移动、会产子,而它的子类猫类又有一个新属性,它会“喵喵”叫,那么猫类就有三个属性:会移动、会产子、会“喵喵”叫。

  JavaScript 同样具有继承性,它允许您用构造函数来关联原型,但它与上例又有所不同,以上例的辅乳类来讲:首先您用构造函数定义辅乳动物,指定会移动、会产子两个属性;接下来定义猫构造函数,指定会“喵喵”叫这个属性,最后您为猫构造函数赋于一个新的辅乳动物对象,这时您就创建了一个新的猫对象,它继承了辅乳动物的两个属性。 添加和删除属性  在基于类的语言中,您是在编译时创建一个类,而在编译时或运行时来实例化一个类的实例。当定义了类后您不能再改变类属性的数目和类型。而在 JavaScript 中,您可以在运行时从任何对象中添加或删除属性,如果您为对象集合原型的一个对象添加了一个属性,那么该原型的所有对象同时获取了这个新属性。

总结基于类(Java)和基于原型(JavaScript)的对象体系比较 Java JavaScript 类和实例是不同的实体 所有对象都是实例 用类定义定义类,类的实例化用构造函数方法 用构造函数定义和创建对象集合 用 new 操作符创建一个对象 相同 用类定义来定义已存在的子类以构造一个对象的层次 用构造函数关联原型,并通过把对象赋予原型创建对象层次 通过类链来继承属性 通过原型链继承属性 类定义指定一个类中所有实例的属性,不能在运行时动态添加属性 构造函数或原型指定一套初始属性集合,可以动态地为单独对象或整个对象集合添加或删除属性

在HTML中植入JavaScript

2008.05.08 / 标签: , / 分类: ExtJS
Sofa

您可以简单地象下面的语句一样植入一个 JavaScript 脚本:

<SCRIPT>
  JavaScript 语句…
</SCRIPT>

指定语言及版本
  因为在不同的浏览器版本中支持不同版本的 JavaScript,以及还有一些其它的脚本语言如:JScript、VBScript 等等,因此我们有必要在 <SCRIPT> 标记中使用 LANGUAGE 属性来指定您所用的脚本语言及其版本,这样当用户浏览器不支持该脚本语言时,<SCRIPT> </SCRIPT>标记中的代码将会被忽略,如下:

<SCRIPT LANGUAGE="JavaScript1.2">

下表为 JavaScript 和 Navigator 版本的关系

Navigator 版本  缺省的 JavaScript 版本  支持的 <SCRIPT> 标记 
Navigator 2.0之前  不支持 JavaScript  无 
Navigator 2.0  JavaScript 1.0  <SCRIPT LANGUAGE="JavaScript"> 
Navigator 3.0  JavaScript 1.1  <SCRIPT LANGUAGE="JavaScript1.1"> 及之前 
Navigator 4.0-4.05  JavaScript 1.2  <SCRIPT LANGUAGE="JavaScript1.2"> 及之前 
Navigator 4.06-4.5  JavaScript 1.3  <SCRIPT LANGUAGE="JavaScript1.3"> 及之前 

我们还可以用 HTML 的注释标记将 JavaScript 代码隐藏起来,而一个浏览器将会忽略它不认识的标记,这样 <SCRIPT> 和 </SCRIPT> 标记都会被忽略,虽然那些不支持 <SCRIPT> 标记可能已经绝迹,您不必非得这样做,但这也是一个尊重用户的好习惯。

指定 JavaScript 代码文件
  当然,我们也可以指定一个 JavaScript 源文件来代替在 HTML 文件中引用,这样您就可以在不同的 HTML 文件中引用相同的 JavaScript 源程序,如:

<SCRIPT SRC="common.js"></SCRIPT>

一个外部的 JavaScript 文件不能包含任何 HTML 标记,它的内容只能是 JavaScript 代码。

在HTML属性值中使用 JavaScript 表达式
  使用 JavaScript 实体(entities),您可以指定一个 JavaScript 表达式作为一个 HTML 属性的值,实体值是动态赋予的,这就是说,您可以创建更灵活的 HTML 结构,因为 HTML 元素的属性依赖于页内先前放置元素信息。您可能对 HTML 的字符实体有所了解—它用(&)符后接一个名称并以分号(;)结束。如一个版权符号的字符实体为—&copy; 等等。类似的,JavaScript 实体也用(&)开始,以分号(;)结束,不同的是它以一个用大括号({ })封装的 JavaScript 表达式来代替其名称和数字。如,假设您定义了一个变量 barWidth,那么您可以将其用于水平标尺的宽度百分比属性中:

<HR WIDTH="&{barWidth};%" ALIGN="LEFT>

引号标记
  当您在一个字符串直接量中需要一个引号字符时,那么用单引号(’)来将其与字符串直接量区分开来。如下例中的函数 bar 包含一个在双引号属性值中的字符串“left”:

function bar(widthPct) {
  document.write(" <HR ALIGN=’left’,WIDTH=" + widthPct + "%>")
}

又如:<INPUT TYPE="button" VALUE="Press Me" onClick="myfunc(‘astring’)">

JavaScript 的值

2008.04.28 / 标签: , / 分类: ExtJS
Sofa

JavaScript 承认以下几种值:

  1. 数值:例如85或3.1415等;
  2. 逻辑(布尔)值:如 true 和 false;
  3. 字符串:如“您好”;
  4. null:空值,它是 JavaScript 的保留值,因为 JavaScript 的大小写敏感性,因此它不同与如 Null 或 NULL 等其它变量;
  5. undefined:值的顶级属性是未定义的,它也是一个保留值。

  JavaScript 是一种动态数据类型语言,也就是说,当您声明一个变量时不必指定数据的类型,当程序执行时它会自动将其转换为您所需要的类型。而当您在一个表达式中将一个字符串类型的值和数值型的值进行“+”运算时,JavaScript 会将数值转换为字符串,如下:

x="The answer is"+23   //将返回"The answer is 23"

而在含别的运算符的语句中,却不会发生这种事情,如:

x="23"-2   //将返回21

无觅相关文章插件,快速提升流量