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 相关文章推荐
用prototype实现的简单小巧的多级联动菜单
Mar 24 Javascript
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
火狐下input焦点无法重复获取问题的解决方法
Jun 16 Javascript
使用js画图之画切线
Jan 12 Javascript
JavaScript中this详解
Sep 01 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 Javascript
需要牢记的JavaScript基础知识
Sep 25 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 Javascript
vuejs 单文件组件.vue 文件的使用
Jul 28 Javascript
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
js模拟F11页面全屏显示
Sep 17 Javascript
Vue使用NProgress进度条的方法
Sep 21 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来处理多个提交任务
2008/05/08 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
php类自动加载器实现方法
2015/07/28 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python 专题一 函数的基础知识
2017/03/16 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python变量类型知识点总结
2019/02/18 Python
Python3列表List入门知识附实例
2020/02/09 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
python中有函数重载吗
2020/05/28 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
过滤器的用法
2013/10/08 面试题
大学生新学期计划书
2014/04/28 职场文书
环保口号大全
2014/06/12 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
党支部活动策划方案
2014/08/18 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
解除处分决定书
2015/06/25 职场文书
青年教师听课心得体会
2016/01/15 职场文书
Python PIL按比例裁剪图片
2022/05/11 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技