2023年Javascript学习笔记.docx
《2023年Javascript学习笔记.docx》由会员分享,可在线阅读,更多相关《2023年Javascript学习笔记.docx(13页珍藏版)》请在咨信网上搜索。
精通HTML语言,擅长css+div布局,css3+html5,响应式布局,能快速手写兼容各类常用浏览器的前端代码。 精通Photoshop、Dreamweaver、Flash等美工制作软件。 对各类常用Javascript效果,query框架有一定的研究,熟悉java和JSP编程,SQL语言,数据库 面试题 1. Class="box"与 .Box{} 这两者有区别,大小写必须一致 3. 剃刀文献是一个 .js 文献 4. Js只写在行为层,html只写在结构层,不要串写。 5. 选项卡,水平菜单 6. 什么是函数:一个程序块,执行一项单一任务或一系列任务。好处是具有重用性,减少程序复杂度。 7. 什么是闭包:有权限访问另一个函数作用域的变量的函数。创建闭包的常见方式就是在一个函数a内部创建另一个函数b,即内部函数。当内部函数在定义它的作用域的外部被引用时,就创建了该内部函数的一个闭包。称外部函数的调用环境为封闭闭包的环境。假如内部函数引用了位于外部函数中的变量,相称于授权该变量可以被延迟使用。因此,当外部函数调用完毕后,这些变量的内存不会被释放(最后的值会保存),闭包仍然需要使用它们。闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,由于a的内部函数b的执行需要依赖a中的变量。 8. (1) var s = confirm(); (2) var s; s = confirm(); (1)方法声明变量立即赋值更好 2. 书写CSS样式环节: a.先做reset样式(将浏览器内置的样式复位,即覆盖) b.按照结构层盒子的嵌套,并列关系写好盒子关系 c.按照效果图分析效果给每个盒子添加相应的属性和值 9. 页面一:alert(s); //报错,找不到 页面二:var s ; alert (s) ; //undefined 页面三:alert(window.XMLHttpRequest) ; //不报错,弹出内容 10. 面向对象:无需关心内部如何,只要知道如何使用它 封装、抽象(把重要的内容抽出,创建对象,再进行封装)、继承(子级继承父级的属性和方法) 用面向对象做选项卡 11. 属性和变量的区别,函数和方法的区别 属性和方法是属于某对象,是私有的;变量是自由自在的。变量能变成属性,属性不能变成变量。全局变量和函数相称于window的属性:var a == window.a function aa() == window.aa=function () 面向对象叫"方法",面向过程叫"函数",函数是有返回值的方法 用对象调用的叫方法(this),直接调用函数名的叫函数 事件:就是文档或浏览器窗口中发生的一些特定的交互瞬间。 事件解决程序的名字以"on"开头,因此click 事件的事件解决程序就是onclick。 分类: 读取事件 页面载入事件onload ,对象window 用户事件 1. onmouseover onmouseout onmousemove onmouseup onmousedown onclick onkeydown onkeyup oncontextmenu(环境菜单)对象document 2. onsubmit 对象form onsubmit在form上加,不能在submit按钮上加 3. keycode clientX clientY button(指示哪一个鼠标键被按下[0无、1左、2右、4中]) offsetX offsetY pageX pageY 对象event clientX clientY 以可视区域来定坐标 4. clientWidth可视区域的宽度 clientHeight 对象documentElement (html) offset 可读不可写 offsetWidth 物体自身宽度,包含边框,填充,不包边界 offsetLeft 左偏移量,包含左边界 scroll scrollTop 滚动离开顶端的距离 scrollWidth onfocus onblur onreadystatechange setTimeout setInterval 对象window 设立定期器前可以先关定期器,解决许多问题 cookie 对象document 火狐,查看页面信息 function eventHandler(e){ //获取事件对象 e = e || window.event; //IE和Chrome下是window.event FF下是e //获取事件源 var target = e.target || e.srcElement; //IE和Chrome下是srcElement FF下是target } 用CSS3做简朴的动画效果但兼容性低,Javascript做复杂的动画效果,JQuery也可做动画效果且兼容性高。 8个div 语义化不强 表格 加载速度慢 列表 ul li span a ; dl dt dd 最佳 解决样式冲突。 Javascript 最佳实践 交互就是网页的元素针对用户的特定行为,产生指定的变化。响应事件。 1. 是什么? JS是用来实现交互的。它是纯文本的,用任何的纯文本编辑器都能编辑它;同时它是网页的一部分,随着一个html页面被请求,JS脚本也随之下载到了用户的计算机本地,在用户计算机本地渲染运营。它是可读的。 2. 不是什么? (1)Javascript不是Java。 Javascript是轻量级运营在浏览器中的语言,而Java是跨平台的开发多种应用的语言。Jsp网站、安卓都是Java开发的。 (2)Javascript和php,asp,jsp完全不同。 Javascript是运营在用户计算机中的,是前台的脚本;php,asp,jsp是运营在服务器上的。Javascript的功能单一,仅仅是用来开发页面效果的;php等语言可以与数据库交互,开发网站程序的。 (3) 有Javascript的网页是静态网页,不是动态网页。动态,静态是指是否与数据库产生交互。只有php,asp,jsp这些网页,才是动态网页。 3. 学习重点 引用类型 高级程序设计121页 Object Array Date RegExp Function 对象 小铅笔第六章 内置对象(DOM)Object Array Date String Event Number Math Boolean Function Global RegExp Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法。这是它与Date,String对象的区别。 浏览器对象(BOM)document window 作用域 局部、全局 作用:控制读写操作 域:空间 范围 只有script内(或js文献内)和函数内叫域 对读写操作可控范围的一个描述 浏览器对js程序的解析机制:碰到域就会发生的操作 (1) JS预解析 先把函数和变量以及参数(var function)提取出来,放入库中 alert(a); //undefined alert(fn1); //function fn1(){alert(1);} var a=1; function fn1() {alert(1);} //a=未定义 fn1=function fn1(){alert(1);} (2) 逐行读代码 表达式会修改预解析的值 正则表达式往往配合search match replace方法使用;小写和大写字母相反; Search只能查位置 match可以返回字符、数组; [asd]pc => apc spc dpc ECMAScript 通过RegExp 类型来支持正则表达式: var expression = / pattern / flags ; //Perl pattern--正则表达式 flags--g(全局模式) i(不区分大小写模式) m(多行模式) Ecmascript规范 要执行什么事情,就要找负责这个事情的对象: DOM 文档对象模型 Document Object Model(统一) 在页面中可见,负责一切和文档相关的事 BOM 浏览器对象模型(不统一) 负责一切和浏览器窗口相关的事 Console负责一切和控制台有关的事 面试: window的对象:document, event, frame, history, location, navigator, screen document的对象:anchor, applet, area, embed, form及其属性, image, link 1. JS对象 JavaScript 中的所有事物都是对象:字符串、数值、数组、函数... 允许自定义对象 提供多个内建对象: Object Array Date RegExp String event Number Math等 对象只是带有属性和方法的特殊数据类型。 自定义属性:oP.name=""; oP[i].index=i; 2. 创建对象的几种方法 164页 (1) 工厂模式 function createPerson(name, age, job){ //形参 var o = new Object(); o.name = name; //属性,形参 o.age = age; o.job = job; o.sayName = function(){ alert(this.name);}; return o;} var person1 = createPerson("Nicholas", 29, "Software Engineer");//对象 var person2 = createPerson("Greg", 27, "Doctor"); 工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象辨认的问题(即如何知道一个对象的类型)。 (2) 构造函数模式 this发生在当前事件上的对象 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ "我的名字叫:"+this.name;}; } var person1 = new Person("Nicholas", 29, "Software Engineer"); var person2 = new Person("Greg", 27, "Doctor"); 此方法没有显式地创建对象;直接将属性和方法赋给了this 对象;没有return 语句。 调用构造函数:必须使用new 操作符。 构造函数的重要问题,就是每个方法都要在每个实例上重新创建一遍。 (3) 原型模式prototype 170页 function Person(){ } //构造函数成了空函数 Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototype.job = "Software Engineer"; Person.prototype.sayName = function(){ alert(this.name); }; var person1 = new Person(); person1.sayName(); //"Nicholas" var person2 = new Person(); person2.sayName(); //"Nicholas" alert(person1.sayName == person2.sayName); //true 同时使用hasOwnProperty()方法和in 操作符,就可以拟定该属性到底是存在于对象中,还是存在于原型中。 简化原型模式: function Person(){ } Person.prototype = { name : "Nicholas", age : 29, job: "Software Engineer", sayName : function () { alert(this.name); } }; 原型模式的局限性:它省略了为构造函数传递初始化参数这一环节,结果所有实例在默认情况下都将取得相同的属性值;它最大问题是由其共享的本性所导致,原型中所有属性是被很多实例共享的,这种共享对于函数非常合适,然而,对于包含引用类型值的属性来说,问题就比较突出了。 (4) 组合使用构造函数模式和原型模式(推荐)176页 (5) 动态原型模式 (6) 寄生构造函数模式 (7) 稳妥构造函数模式(安全) 常见的三种节点:元素节点(p),属性节点(id),文本节点(text) (查找时的先后顺序) <p id="p1" class="">text</p> 4. 如何学? 增 删 改 查(读 写)对html css innerHTML createTextNode appendChild parentNode insertBefore childNodes nodeValue 行为层的样式优先级最高。 Js控制css 用 style(行间样式) ,className ,setAttribute oP.style.background=""; 设立行间样式 .para{} oP.className="para"; 设立外部样式 oP.setAttribute("class","para"); 设立外部样式 对象(名词)=属性+方法 +事件 万物皆是对象。 属性(名词):描述对象特性 无() 相称于变量用 方法(动词):描述对象的行为 有() 相称于函数用,函数名(参数) 事件:指令 表达式:由运算符和操作数链接起来的式子 对象.属性 = "新的值"; 赋值 对象.方法("参数"); 调用方法 JS对大小写敏感 一个盒子可以响应单击事件,也称为为它添加了事件监听。如:<div onlick="bianbiaoti()"></div> 事件的三要素: 事件源:有监听的HTML标签,即能响应事件的HTML标签。如<div> 事件名:用户的特定行为。如:onclick , onmouseover 事件的响应:一个个function HTML事件解决:在标记上加事件然后调用函数(写在结构层) DOM0级事件解决 例:window.onload.html 事件源(事件发生在谁身上) ie下window.event.srcElement 标准下event.target nodeName:找到元素标署名 循环影响性能,找东西放循环体外性能更好 事件委托(让别人做):运用冒泡原理,把事件加到父级上,触发执行效果。 浏览器解析:事件捕获-》目的阶段-》冒泡阶段 事件委托好处:1. 提高性能 2. 新添加的元素还会有之前的事件 性能好:代码少,完毕的功能多 window.onload = function() { var oUl = document.getElementById("ul"); var aLi = oUl.getElementsByTagName("li"); var oBtn = document.getElementById("btn"); var iNow = 4; oUl.onmouseover = function(ev) { var ev = ev || window.event; var target = ev.target || ev.srcElement; //alert(target.innerHTML); if(target.nodeName.toLowerCase() == "li") { target.style.background = "red"; } } oUl.onmouseout = function(ev) { var ev = ev || window.event; var target = ev.target || ev.srcElement; //alert(target.innerHTML); if(target.nodeName.toLowerCase() == "li") { target.style.background = ""; } } oBtn.onclick = function() { iNow ++; var oLi = document.createElement("li"); oLi.innerHTML = 1111 *iNow; oUl.appendChild(oLi); } } 函数:内置函数(系统中的函数)、自定义函数 有名函数(可实现函数重用)、匿名函数 A. 三个对话框方法(内置函数):alert(); confirm(); prompt(); 这三个方法是window对象的方法。 如何学习函数: 1. 掌握该函数的功能 2. 函数有没有返回值 (1)var s = alert(true); 警告框 document.write(s); //得出undefined 变量不加引号,如s (2) var s = confirm("你拟定吗?"); 确认框 document.write(s); //得出true或false (3) var s = prompt("请输入你的大名",""); 提醒框 document.write(s); //得出第二个参数的值或null 3. 函数的参数(参数的数据类型及参数的个数) 4. 函数的定义和调用(针对自定义函数) B. 自定义函数的定义和调用 简朴格式 function abc(){ 功能语句 var i = 2; var j = 1; var s = i + j; alert(s); } 调用函数的格式 abc(); 执行环境及作用域: var color = "blue"; function changeColor() { var anotherColor = "red"; function swapColors() { var tempColor = anotherColor; anotherColor = color; color = tempColor; // 这里可以访问color、anotherColor 和tempColor } // 这里可以访问color 和anotherColor,但不能访问tempColor swapColors(); } // 这里只能访问color changeColor(); 注:无论全局环境还是changeColor()的局部环境都无权访问tempColor,但在swapColor()内部可访问其他两个环境中的所有变量,由于他们是它的父执行环境。 使用var 声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with 语句中,最接近的环境是函数环境。假如初始化变量时没有使用var 声明,该变量会自动被添加到全局环境。JS高级程序设计 第三版 94页 JavaScript 变量可以用来保存两种类型的值:基本类型值和引用类型值。基本类型的值源自以下几种基本数据类型:Undefined、Null、Boolean、Number 、String、function 编写利器:sublime, webstorm Sublime: Html:5 div ... Ctrl+e Ctrl+滚动鼠标 调整字号 按鼠标中键可以多行编辑 Ctrl+shift+K 删除当前行 Ctrl+shift+D 复制当前行 Ctrl+shift+上下键 调整当前行的位置 Ctrl+alt+[ 让CSS格式进行转换(单行,多行) DOM: alert(images.length); //输出图像的数量 alert(images[0].src); //输出第一个图像元素的src 特性 aler t(images.item(0).src); //输出第一个图像元素的 src 特性 <img src = "myimage.gif" name = "myImage" /> var myImage = images.namedItem("myImage"); 或写 var myImage = images["myImage"]; 特殊集合: Document.forms,包含文档中所有的<form>元素,与document.getElementsByTagName("form")得到的结果相同; Document.images,包含文档中所有的<img>元素,与document.getElementsByTagName得到的结果相同; document.links,包含文档中所有带href 特性的<a>元素。 document.anchors,包含文档中所有带name 特性的<a>元素。 <div id="myDiv" class="bd" title="Body text" lang="en" dir="ltr"></div> 元素中指定的所有信息,都可以通过下列JavaScript 代码取得:html-dom写法 var div = document.getElementById("myDiv"); alert(div.id); //"myDiv"" alert(div.className); //"bd" alert(div.title); //"Body text" alert(div.lang); //"en" 通过为每个属性赋予新的值,也可以修改相应的每个特性: div.id = "someOtherId"; div.className = "ft"; div.title = "Some other text"; div.lang = "fr"; 注:在通过JavaScript 以编程方式操作DOM 时,开发人员经常不使用getAttribute(),而是只使用对象的属性。只有在取得自定义特性值的情况下,才会使用getAttribute()方法,如:my_special_attribute="hello!"--div.getAttribute("my_special_attribute");。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 Javascript 学习 笔记
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文