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 相关文章推荐
js 操作css实现代码
Jun 11 Javascript
JavaScript 精粹读书笔记(1,2)
Feb 07 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
jquery cookie的用法总结
Nov 18 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 Javascript
RequireJS入门一之实现第一个例子
Sep 30 Javascript
jQuery验证插件validate使用方法详解
Sep 13 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
Aug 23 jQuery
nginx配置React静态页面的方法教程
Nov 03 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
Vue插件之滑动验证码用法详解
Apr 05 Javascript
JSON stringify方法原理及实例解析
Oct 23 Javascript
从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
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
简述python Scrapy框架
2020/08/17 Python
python如何随机生成高强度密码
2020/08/19 Python
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
农场厂长岗位职责
2013/12/28 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
代理人委托书
2014/09/16 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
离婚案件被告代理词
2015/05/23 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
婚宴来宾致辞
2015/07/28 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP