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 indexOf()定义和用法
Oct 21 Javascript
JS函数this的用法实例分析
Feb 05 Javascript
理解Javascript文件动态加载
Jan 29 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
JavaScript用二分法查找数据的实例代码
Jun 17 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
Aug 16 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
vue引用js文件的多种方式(推荐)
May 17 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
详解angular2如何手动点击特定元素上的点击事件
Oct 16 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
vue实现按钮切换图片
Jan 20 Vue.js
从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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
php开启openssl的方法
2014/05/15 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
vue中如何使用ztree
2018/02/06 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Python中关于使用模块的基础知识
2015/05/24 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Python子类继承父类构造函数详解
2019/02/19 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
九年级语文教学反思
2014/02/04 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
诚信教育主题班会
2015/08/13 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
python执行js代码的方法
2021/05/13 Python
React forwardRef的使用方法及注意点
2021/06/13 Javascript