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 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
Aug 23 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
jQuery中innerHeight()方法用法实例
Jan 19 Javascript
去除html代码里面的script正则方法
May 19 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
Aug 02 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
Dec 24 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
Aug 31 Javascript
详解Vue 换肤方案验证
Aug 28 Javascript
js实现拖动缓动效果
Jan 13 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
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
date.parse在IE和FF中的区别
2010/07/29 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
python实现简单的TCP代理服务器
2014/10/08 Python
django 自定义用户user模型的三种方法
2014/11/18 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
python 遍历pd.Series的index和value
2019/11/26 Python
如何使用python代码操作git代码
2020/02/29 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
Hibernate持久层技术
2013/12/16 面试题
浅谈react路由传参的几种方式
2021/03/23 Javascript
我为党旗添光彩演讲稿
2014/09/10 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书