1.$.ajax()函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XML,那么返回的结果就可以用普通的XML方法或者jQuery的选择器来遍历。如果见得到其他类型,比如HTML,则数据就以文本形式来对待。
通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。

2.JS 中值的类型分为原始值类型和对象类型。原始值类型包括 number, string, boolean, null 和 undefined;对象类型即 object。首先原始值类型它就不是对象。

3.另外,要注意 ‘hello’ 和 new String(‘hello’) 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:

typeof 'hello';  // 'string'
typeof new String('hello');  // 'object'

4.通常来说判断一个对象的类型使用typeof,但是在new String的情况下的结果会是object
此时需要通过instanceof来判断

5.存储技术总结:
浏览器端
cookie
WebStorage(localStorage、sessionStorage)
userData
indexedDB
服务器端
session

6.JavaScript中有5种简单数据类型(也称为基本数据类型): Undefined、Null、Boolean、Number和String 。还有1种复杂数据类型—— Object ,Object本质上是由一组无序的名值对组成的。

7.<dl>标记定义了一个定义列表,定义列表中的条目是通过使用<dt>标记(“definition title”,定义标题)和<dd>标记(“definition description”,定义描述)创建的。<dt>给出了术语名,<dd>标记给出了术语的定义。

8.块级元素

行内元素

块级元素与行内元素的区别
(1)块级元素会独占一行,其宽度自动填满其父元素宽度;
行内元素不会独占一行,相邻的行内元素会排列在同一行,直至一行排不下才会换行,其宽度随元素的内容而变化。
(2)块级元素可以包含行内元素和块级元素;行内元素不能包含块级元素。
(3)行内元素设置width、height、margin-top、margin-bottom、padding-top、padding-bottom无效。
块级元素与行内元素的转换
display:inline-block;
display:inline;
display:block;
可变元素

9. CSS3新增属性用法整理:
1、box-shadow(阴影效果)
2、border-color(为边框设置多种颜***r> 3、border-image(图片边框)
4、text-shadow(文本阴影)
5、text-overflow(文本截断)
6、word-wrap(自动换行)
7、border-radius(圆角边框)
8、opacity(透明度)
9、box-sizing(控制盒模型的组成模式)
10、resize(元素缩放)
11、outline(外边框)
12、background-size(指定背景图片尺寸)
13、background-origin(指定背景图片从哪里开始显示)
14、background-clip(指定背景图片从什么位置开始裁剪)
15、background(为一个元素指定多个背景)
16、hsl(通过色调、饱和度、亮度来指定颜色颜色值)
17、hsla(在hsl的基础上增加透明度设置)
18、rgba(基于rgb设置颜色,a设置透明度)

/*
删除数组元素Array中的重复元素,并且返回删除元素的新数组
*/
Array.prototype.distinct = function(){
    var res = [];
    for(let i = 0; i < this.length; i++){
        for(let j = i + 1; j < this.length; j++){
            if(this[i] == this[j]){
                res.push(this.splice(j, 1)[0]);
                break;
            }
        }
    }
    return res;
}

//test
document.write(['a', 'b', 'c', 'd'].distinct());