JavaScript语言中的Literal Syntax特性分析


Posted in Javascript onMarch 08, 2007

我刚开始学习JavaScript的时候,老是会被JavaScript里的一些莫名其妙的语法形式搞的糊里糊涂的。而且也不知道到底它支持了多少那些莫名其妙的语法形式?现在通过这个几个月的深入了解,算是把它们弄得比较清楚了,所以下面就来说说JS的Literal Syntax特性。

    JavaScript语言的文本化的特性?My God,难道有哪门语言的编写不是使用文本吗?不使用文本还能用啥?用意识流吗?真是faint哈。

    虽然我们的每种语言都使用文本来表示,说远点asm是文本的吧,BASIC是文本的吧,C/C++、C#、java啥的都是文本吧。这没有错,它们的语言表达都是文本形式,可是它们却不能使用文本来表示所有内容。简单类型比如数字啊字符串啊还行,但是C#或Java可以用文本表示一个对象实例吗(不是用一堆定义语句,然后再new个对象实例哦)?显然是不行的,然而JavaScript却提供了对所有数据类型包括复杂对象的文本化书写方式。

    我们编写JS常用的数据类型包括:Number、Boolean、String、Array、Function和Object。其中这里面的Number、Boolean和String属于简单类型,文字方式书写是它们的基本方式,如果用new xxx()来定义反而会让人觉得是脱裤子打屁。 

JavaScript语言中的Literal Syntax特性分析 Number: var i = 100; i = 100.11;
JavaScript语言中的Literal Syntax特性分析 Boolean: 
var b = true; b = false;
JavaScript语言中的Literal Syntax特性分析 String: 
var str = 'this is a string.';

    对于复杂数据类型,函数、数组和对象我们怎么办呢?函数不用说了,都是以文本方式定义的。下面就看看数组和对象是怎么表示的吧。假如我们有一个数组:

JavaScript语言中的Literal Syntax特性分析 var ary = new Array(6);
JavaScript语言中的Literal Syntax特性分析 ary[
0= null;
JavaScript语言中的Literal Syntax特性分析 ary[
1= 1;
JavaScript语言中的Literal Syntax特性分析 ary[
2= 'string';
JavaScript语言中的Literal Syntax特性分析 ary[
3= true;
JavaScript语言中的Literal Syntax特性分析 ary[
4= function()
JavaScript语言中的Literal Syntax特性分析 {
JavaScript语言中的Literal Syntax特性分析     
return 'keke';
JavaScript语言中的Literal Syntax特性分析 };
JavaScript语言中的Literal Syntax特性分析 ary[
5= new MyObject();

    我们使用文本方式(也就是我们平时说的初始化方式)来写这个数组它将是:

JavaScript语言中的Literal Syntax特性分析 var ary1 = [null1, 'string', truefunction(){return 'keke';}, new MyObject()];JavaScript语言中的Literal Syntax特性分析

    比上面精简的多吧?而且这里数组的文本化方式还可以写的远比这复杂的多,比如:

   var ary2 = []; //空数组,相当于 new Array();
   var ary3 = [1,[2,[3,[4,[5,[6,[7,[8,[9,[0]]]]]]]]]];

    第三个ary3是啥数组,我也不知道了@_@。

    不对呀,怎么ary[5]是new MyObject()呢?哦,不好意思,我们再来把MyObject示例一下,假如它被定义为:

JavaScript语言中的Literal Syntax特性分析 function MyObject()
JavaScript语言中的Literal Syntax特性分析 {
JavaScript语言中的Literal Syntax特性分析     
this.Properties1 = 1;
JavaScript语言中的Literal Syntax特性分析     
this.Properties2 = '2';
JavaScript语言中的Literal Syntax特性分析     
this.Properties3 = [3];
JavaScript语言中的Literal Syntax特性分析    
this.toString = function()
JavaScript语言中的Literal Syntax特性分析     {
JavaScript语言中的Literal Syntax特性分析          
return '[class MyObject]';
JavaScript语言中的Literal Syntax特性分析     };
JavaScript语言中的Literal Syntax特性分析 }
JavaScript语言中的Literal Syntax特性分析
JavaScript语言中的Literal Syntax特性分析 MyObject.prototype.Method1 
= function()
JavaScript语言中的Literal Syntax特性分析 {
JavaScript语言中的Literal Syntax特性分析     
return this.Properties1 + this.Properties3[0];
JavaScript语言中的Literal Syntax特性分析 };
JavaScript语言中的Literal Syntax特性分析
JavaScript语言中的Literal Syntax特性分析 MyObject.prototype.Method2 
= function()
JavaScript语言中的Literal Syntax特性分析 {
JavaScript语言中的Literal Syntax特性分析     
return this.Properties2;
JavaScript语言中的Literal Syntax特性分析 };JavaScript语言中的Literal Syntax特性分析

    那么我们的var obj = new MyObject()怎么文本化呢?其实也很简单的了,obj的文本化定义如下:

JavaScript语言中的Literal Syntax特性分析 var obj = 
JavaScript语言中的Literal Syntax特性分析     {
JavaScript语言中的Literal Syntax特性分析         Properties1 : 
1, Properties2 : '2', Properties3 : [3],
JavaScript语言中的Literal Syntax特性分析         Method1 : 
function(){ return this.Properties1 + this.Properties3[0];},
JavaScript语言中的Literal Syntax特性分析         Method2 : 
function(){ return this.Preperties2; }
JavaScript语言中的Literal Syntax特性分析     };

    这个类实例的直接文本化定义虽然算不上精简,但也还不错吧。这样我们就可以用这个文本化类实例去替换ary中那个new MyObject()了。类实例文本化定义的语法为,用一对"{}"表示类,也就说"{}"完全等价于"new Object()"。然后"{}"内按"key:value"组织属性和方法,key可以是任意[A-Za-z0-9_]的字符组合,甚至数字开头都是合法的@_@,value是任何的合法的文本化JavaScript数据,最后每个键值对用","来分隔就行了。

Javascript 相关文章推荐
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
Feb 03 Javascript
Prototype Selector对象学习
Jul 23 Javascript
jquery滚动条插件jScrollPane的使用介绍
Nov 08 Javascript
js数组去重的常用方法总结
Jan 24 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
js中this用法实例详解
May 05 Javascript
AngularJS身份验证的方法
Feb 17 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
关于js中的鼠标事件总结
Jul 11 Javascript
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
Vue开发之封装分页组件与使用示例
Apr 25 Javascript
js和jquery判断数据类型的4种方法总结
Aug 28 jQuery
从JavaScript的函数重名看其初始化方式
Mar 08 #Javascript
翻译整理的jQuery使用查询手册
Mar 07 #Javascript
用window.location.href实现刷新另个框架页面
Mar 07 #Javascript
javascript中的location用法简单介绍
Mar 07 #Javascript
JsEasy简介 JsEasy是什么?与下载
Mar 07 #Javascript
动态控制Table的js代码
Mar 07 #Javascript
js+FSO遍历文件夹下文件并显示
Mar 07 #Javascript
You might like
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
php多文件上传实现代码
2014/02/20 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
PHP实现链式操作的核心思想
2015/06/23 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
python用match()函数爬数据方法详解
2019/07/23 Python
python学生管理系统的实现
2020/04/05 Python
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
大学生求职简历的自我评价范文
2013/10/12 职场文书
静心口服夜广告词
2014/03/20 职场文书
农村葬礼主持词
2014/03/31 职场文书
委托培训协议书
2014/11/17 职场文书
应届毕业生自荐信
2015/03/04 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL