JavaScript

字面量

 

在编程语言中,字面量是一种表示值的记法。例如, “Hello, World!” 在许多语言中都表示一个字符串字面量( string literal ), JavaScript 也不例外。以下也是 JavaScript 字面量的例子,如 5 true false null ,它们分别表示一个整数、两个布尔值和一个空对象。
JavaScript 还支持对象和数组字面量,允许使用一种简洁而可读的记法来创建数组和对象。考虑以下语句,其中创建了一个包含两个属性的对象( firstName lastName :
Var customer=new object();
customer.firstname =‘ jhon ’;
Customer.lastname =‘doe’;
 
还可以使用一种等价的方法创建同样的对象:
   
 
Var customer={ customer.firstname =‘ jhon’,Customer.lastname =‘doe’;};
 
 
以上赋值语句的右边是一个对象字面量( object literal )。对象字面量是一个名值对列表,每个名值对之间用逗号分隔,并用一个大括号括起。各名值对表示对象的一个属性,名和值这两部分之间用一个冒号分隔。要创建一个数组,可以创建 Array 对象的一个实例:
Var somePrimes =new Array();
somePrimes.Push =(1,2,3,4); 
 
不过首选的方法是使用一个数组字面量( array literal ),这是一个用逗号分隔的值列表,用中括号括起:
 
Var somePrimes =[1,2,3,4,5,6,7]
 
前面的例子展示了对象和数组字面量中可以包含其他字面量。以下是一个更复杂的示例:
Var team=(
Name:’’,
Mumbers :[ ];
count:function () {return Mumbers.Length }
) 
赋给 team 变量的对象有 3 个属性: name members count 。注意, '' 表示空串, [] 是一个空数组。甚至 count 属性的值也是一个字面量,即函数字面量( function literal ):
   
函数字面量如下构造:前面是一个
function 关键字,后面是一个函数名(可选)和参数表。然后是函数体,包围在大括号中。
以上已经介绍了字面量,下面来介绍 JavaScript 对象记法( JavaScript Object Notation JSON ),这是一种用于描述文件和数组的记法,由 JavaScript 字面量的一个子集组成。 JSON Ajax 开发人员中越来越流行,因为这种格式可以用于交换数据,通常取代了 XML
使用 JSON
JSON 是一种用于数据交换的文本格式。其作用是提供结构化数据的一种表示,而不依赖于所用的语言和平台。使用这种格式,可以在不同语言编写的应用程序之间交换数据,而且可以在不同机器上运行应用程序。与 XML 相比(这可能是最著名的数据交换格式), JSON 的语法很简洁。这说明,通过网络传输 JSON 数据通常需要更少的带宽。
JSON 建立在 JavaScript 语言的一个子集的基础上。因此,其编码和解析很直接。由于绝大多数 Ajax 开发人员同时也是 JavaScript 开发人员,所以 JSON 几乎没有什么学习曲线。
JSON 结构  
 
JSON 的基础包括两个结构:一个名值对集合,称为对象( object ),以及一个有序的值列表,称为数组( array )。在 JSON 中,值( value )可以是以下某种形式:
对象
数组
数字
true
false
null
对象表示为 JavaScript 对象字面量,数组表示为 JavaScript 数组字面量,余下的值也由相应的字面量表示。
 
由于 JSON JavaScript 字面量的一个子集,语法方面存在一些限制。在一个 JSON 对象中,名值对中的名部分必须是一个字符串,而值部分必须是得到支持的某种值。以下是一个对象的 JSON 表示,该对象包含两个属性:
{“ firstname ”:” jhon ”; “ lastname ”:”doe”};
属性名( firstName lastName )必须是串,而且必须包围在双引号中。下面的代码表示了一个类似的对象,将前面的代码与之做一个比较:
{ firstname :” jhon ”; lastname :”doe”};
 
JavaScript 中,这两个对象有相同的结构。不过,第二个对象不是一个合法的 JSON 表示,因为属性名没有包围在双引号中。
JSON 数组也存在一些限制,数组中的元素必须是得到支持的值。例如, Date 对象不在支持的值之列,所以不能作为 JSON 数组的元素或 JSON 对象的一个属性。 String JavaScript 字符串字面量有相同的表示,不过串必须用双引号包围。 Number 类似于 JavaScript 数字字面量,不过八进制和十六进制格式未得到支持。下面是一个 JSON 数组的例子:
[1,2,3,4,5,5]
 
布尔值( true false )和 null 与相应的 JavaScript 字面量有相同的表示。
说明 方法不能使用 JSON 表示,因为 JSON 语法中不包括函数字面量。另外, JavaScript new 操作符也不是 JSON 语法的一部分,不能在对象或数组中使用。
JSON 的优点之一是它易于解析。已经为许多语言编写了很多 JSON 解析器,它们可以自动完成 JSON 的生成和解析。(在 JSON 官方网站上可以找到这些解析器的一个列表,见 http://json.org )在 JavaScript 中,解析过程相当直接,所要做的只是将 JSON 串传递给 JavaScript eval 函数。如果有一个包含 JSON 数据的 jsonString 变量,以下代码将解析这个变量,并返回相应的 JavaScript 对象:
var aa = eval (‘(‘+ jsonstring +’)’);
 
注意,在调用 eval 之前要把 JSON 数据用括号括起。这样就要求 eval 将参数看作为一个表达式,而不会把对象字面量 {} 解释为一个代码块。不过 eval 函数可以执行任意的代码,如果数据来自一个不可信的来源,可能会导致安全问题。出于这个原因,一般建议在调用 eval 函数之前先验证 JSON 数据
 
 
前言
 
概述
JavaScript:

关键字:解释性语言,客户端工作,浏览器

随着ajax技术的出现,JavaScript变得日益重要.目前比较优秀的框架有Ext,jquery

目录

 

数据类型
类型转换
变量
运算符
语句
对象
数组
数据类型
 

基本数据类型和复合数据类型

数字

  整型、浮点

    科学计数法 数字e|E[+,-]整型数字

字符串
布尔值
函数
对象

  内置对象Date,Error,RegEx

类型转换

 

数字到字符串

  可以与空字符串进行’+’操作

  也可以使用内置的toString()方法

字符串到数字

进行’-’操作。- 0

Number()构造。相对非常严格,忽略开始和结尾处的空白字符,中间部分不能出现非数字。

转换函数parseInt,parseFloat。忽略开始处的空白字符,尽可能多的匹配。

布尔值与数字、字符串的转换

  数字:零,false;非零数字,true

  字符串:,false;非空字符串,true

  任何对象true;null,false

  true,1.false,0.或者字符串'true','false'

变量

 

没有类型,一个变量可以多次声明,可以存放任何类型的数据。
如果没有使用声明符 var , 将创建全局变量。没有块级作用域。在函数体中的变量将覆盖函数外的变量,即使没有执行。
基本类型和引用类型
运算符
 
算数运算符

  +-、*、/++--%

位运算符

  >><<

赋值运算符

  =+=-=/=、操作符后连接’=‘

相等运算符

  =====

关系运算符

  ><ininstanceof

对象

 

创建对象

  对象直接量。var o={x:1,y:1}

  创建已定义的对象,使用该对象的构造函数。new ClassName()

  属性的访问:

  o.AttributeName

  属性的枚举

  for(var name in o)

  检测属性是否存在

  通过in来检测。'x' in o

  o.x!=undefined

  删除属性

  delete

  排除非继承的属性

  hasOwnProperty

  对象属性是无序集合,有区分与数组

d
数组
 
不支持多维数组,但是元素可以为数组,从而实现多维数组。不是连续的。
访问数组元素

  下标法。O[index]

遍历数组

  下标法:for(var i=0;i<a.length;i++)

数组方法

  push pop在数组尾部进行插入和删除数组元素

  shiftunshift在数组的头部进行插入和删除数组元素

  join将数组元素连接成字符串,可以指定分隔符。与split相逆。支持递归

  reverse倒序

  sort排序

  concat将数组合并。不支持递归

a
函数
 
定义 function name(a/*parameter list*/){}

  function 关键字 函数名称 (参数){函数体}

Arguments 对象

  在函数体中,访问实际传递给函数的参数。类似于数组,但不同于数组,没有数组基本的方法。

Callee

  arguments对象的属性,用来引用当前正在执行的函数本身,多用于匿名函数访问自身。

d
 
javascript 本身并不存在类。可以把定义单个对象的相关函数看作一个类定义。

  构造函数 function functionName(paralist){

  /*code*/}

  类属性的定义

  通过关键字this来实现,this引用的当前对象。但不一定是类对象本身。function 自身的callapply可以传递this

  eg.

  function Rect(x,y){

  this.x=x;

  this.y=y;

  }

  方法

  用来计算不同对象,通过对象自身的数据来计算,本身不会存储数据。通过原型来定义各个实例都可以访问的属性。

  Rect.protetype.area=function(){return this.x*this.y};

  prototype本身是一个对象,因此实际上为对象实现了一个方法。通过prototype实现了继承

  定义对象的实例属性

  通过this.attributename或者classname.prototype.attributename

  非实例属性classname.attributename

属性访问

 

由于实现了继承,属性的寻找,先在对象自身寻找,如果没有找到则从它继承的对象去寻找。
继承关系实现了一个链,不能形成闭链。
访问被掩藏的属性时,可以通过被继承对象来访问。而被继承对象通过 prototype 来访问。
只读属性
通过 return 来实现 , 从而避免写操作。 function Rect ( x,y ){
this.x =function(){return x};
this.y =function(){return y}
}
判断对象类型
 
typeof

  返回值 类型:字符串,简单数据类型,object,number,boolean,string

instanceof 检查对象类型

  通过实现该对象的构造函数进行监测

正则表达式

 

Pattern c# 中的正则语法一样。 Pattern // 中。 /pattern/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值