ES6之模板字符串

1
2
3
4
5
function authorize(user, action) {
if (!user.hasPrivilege(action)) {
throw new Error(`User ${user.name} is not authorized to do ${action}.`);
}
}

上面代码中,${user.name}${action} 被称为模板占位符,JavaScript 将把 user.name 和 action 的值分别插到对应的位置上,然后生成像这样 “User jorendorff is not authorized to do hockey.” 的字符串。

现在,我们看到了一个比 + 运算符更优雅的语法,下面是一些你期待的特性:

模板占位符可以是任何 JavaScript 表达式,所以函数调用和四则运算等都是合法的。(甚至你还可以在一个模板字符串中嵌套另一个模板字符串。)

如果一个值不是字符串,它将被转换为字符串。例如,如果 action 是一个对象,那么该对象的 .toString() 将被调用,来将其转换为字符串。

如果你想在模板字符串中使用反引号,你需要使用反斜杠 \ 将其转义。

同样地,如果想在模板字符串中输出 ${ ,也需要使用反斜杠将其转义:\${ 或 $\{

模板字符串可以跨越多行:

$("#warning").html(<h1>Watch out!</h1> <p>Unauthorized hockeying can result in penalties of up to ${maxPenalty} minutes.</p>);

模板字符串中所有的空格、换行和缩进,都将被原样输出到结果字符串中。

JS之数据类型转化

数据类型

JavaScript的数据类型有七种:

Boolean:布尔值,true 和 false 两个特定值

Null:表示无值,即此处的值就是“无”的状态

Undefined: 表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值

Number:整数和小数

String:字符组成的文本

Symbol (这个是ES6新定义的数据类型)

Object:各种值组成的集合

其中Boolean、Null、Undefined、Number、String和Symbol称为原始类型,即它们是最基本的数据类型,不能再细分。而 Object 称为合成类型,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。其中对象又可分成三个子类型:
侠义的对象(object)、数组(array)、函数(function)

Read More

JS模块化编程

对象写法

模块即实现特定功能的一组方法。只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。

若多个函数依次调用,缺点很明显:”污染”了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。

避免这种缺点,可以使用对象写法:把模块写成一个对象,把所有的模块成员(即所要调用的函数)写进一个对象里。

1
2
3
4
5
6
7
8
9
var module1 = new Object({
_count: 0,
m1: function() {
//code here
},
m2: function() {
//code here
}
});

则调用函数即访问对象的属性: module1.m1();

但是,这样的写法会暴露所有模块成员,内部状态可以被外部改写。比如,外部代码可以直接改变内部计数器的值: module1._count = 5;

Read More

JSON浅析

概念


JSON:JavaScript 对象表示法,是一种轻量级的数据交换格式。

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

  • JSON 是由‘名称:值’对组成的集合,例如,”key1”:value1。

  • JSON 的值(value) 可以是 双引号(不能是单引号) 括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。

  • JSON 有三种类型的值:

    1、简单值:字符串、数值、布尔值和 null 。注意:JSON 不支持 undefined。

    2、对象:由{}括起来的,无序的‘名称:值’对集合。如:{“key1”:value1,”key2”:value2,”key3”:value3,…}

    3、数组:由[]括起来的,值的有序集合。如:[{“key1”:value1,”key2”:value2,”key3”:value3},{“key1”:value1,”key2”:value2,”key3”:value3}…]
  • JSON使用JavaScript语法


    因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

    区别:1、区别于 JS 中的对象字面量,JSON 对象的属性要加引号。 2、JSON 中没有变量的概念,末尾不用加分号。 3、属性的值可以是简单值,也可以是复杂类型值。可以嵌套。

    1
    2
    3
    4
    5
    6
    7
    8
    {
    "name": "Mary",
    "age": 29,
    "school": {
    "name": "Mike",
    "location": "Landon Street"
    }
    }

    JSON方法


    JSON 字符串: 指符合 JSON 格式的 JS 字符串。 如: var str1 = ‘{ “name”: “cxh”, “sex”: “man” }’;

    JSON 对象: 指符合 JSON 格式的 JS 对象。 如:var str2 = { “name”: “cxh”, “sex”: “man” };

  • stringify(): 把 JS 对象序列化为 JSON 字符串

  • parse(): 把 JSON 字符串解析为原生 JS 值。