【Jsp精品源码栏目提醒】:网学会员--在 Jsp精品源码编辑为广大网友搜集整理了:传智播客_韩顺平_轻松搞定网页设计(html+css+javascript)_之javascript - 讲义教程绩等信息,祝愿广大网友取得需要的信息,参考学习。
Javascript的基本介绍 JS是用于WEB开发的脚本语言 脚本语言是什么 脚本语言不能独立使用它和HTML/
JSP/PHP/ASP.NET配合使用 脚本语言也有自己的变量函数控制语句顺序分支循环 脚本语言实际上是解释性语言即在执行时直接对
源码进行执行 Java程序.java→.class→jvm js→浏览器js引擎来解释执行 Js在客户端浏览器执行 因为js是由浏览器来执行的因此这里有个问题不同类型的浏览器可能对js的支持不一样。
案例1 需求打开网页后显示hello 问题 js的位置可以随意放 js必须使用 在一个html文件中
JSP/PHP/ASP.NET可以出现多对script片段浏览器会按照先后顺序一次执行 案例2:Hello world程序改进 如何定义变量 如何运算 Js的变量类型是怎样决定的 1 Js是弱数据类型语言即在定义变量侍候统一使用var表示甚至可以去点var这个关键字 2 Js中的变量的数据是由js引擎决定的 Var name”shunping” //name是字符串 Var kk2 //kk是数字 Name234 //这事name自动变成数 Js的命名规范函数/变量 1 使用大小写字母数字可以命名 2 不能以数字打头 3 不能使用js保留字和关键字即java里的关键字 4 区分大小写 5 单行注释// 6 多行注释/……./ 韩顺平JS第三讲 Js的数据类型 基本数据类型 数值类型 字符串类型 布尔类型 通过typeof可以看到变量的具体数据类型 举例 复合数据类型 数组 对象 特殊数据类型 Null 即varnull Undefined 即如下代码 Js定义变量初始化赋值 定义变量 即vara 初始化 即在定义变量时就给值 赋值 即比如你先定义一个变量 vartt 然后再给值tt780 js数据类型转换 自动转换 例子var123 //a是数值 a”hello” //a的类型是string 强制转换 例子字符串转换成数字 Var a123” aparseInta //使用系统数强制转换 Var b90 //b是number bb”” //b就是string 运算符 — / 取摸即两个数相除的余数 强调取模主要用于整数之间取模 例子编写一个程序判断两个数是否能够整除 运算符 a aa1 a-- bb-1 a 表示先把自己加1再赋值 --a 表示先把自己减1再赋值 例子 Var a56 Var ba //ba等同于aa1ba ba等同于ba aa1 Window.alertb Window.alerta --运算符 Var a56 Var b--a //b--a等同于aa-1ba ba--等同于ba aa-1 Window.alertb Window.alerta 例子编写一个程序判断两个数是否能够整除 运算符 a aa1 a-- bb-1 a 表示先把自己加1再赋值 --a 表示先把自己减1再赋值 例子 Var a56 Var ba //ba等同于aa1ba ba等同于ba aa1 Window.alertb Window.alerta --运算符 Var a56 Var b--a //b--a等同于aa-1ba ba--等同于ba aa-1 Window.alertb Window.alerta 错误案例 更正 输出 myfuns.js代码 调用myfuns.js 案例一 Js文件 调用 案例2 Js文件 调用abc5 输出3 3 4 Js文件 调用 数组 数组在内存中的存在形式 内存数据调用案例 输出900 内存数据分析: 输出35 90 900 内存数据调用分析 输出 hello world abc 顺平 输出 h e l l o w o r l d a b c 顺 平 输出 hello world 输出 045 190 20 gg9000 二维数组的遍历 输出shunping 123 4.5 a b c 优化排序 输出 输出找到 下标为4 数组转置 输出 JavaScript面向基于对象编程 澄清概念 js中 基于对象js 面向对象 js中没有类class但是它取了一个新的名字叫原型对象。
因此类等同于原型对象。
面向对象特征介绍 Javascript是一种基于对象object-based的语言你遇到的所有东西机会都是对象 ??特别说明基于对象也好面向对象也好实际上都是以对象的概念来编写程序。
从本质上并无区别所以这两个概念在课程中是一样的。
因为javascript中没有class类所以有人把类也称为原型对象。
因为这两个概念在编程中发挥的作用看都市一个意思 总结JS中基于对象JS面向对象 JS中没有类的概念按标准的说法原型对象。
其实就是类 javascript是一种面向基于对象的动态脚本语言是一种基于对象Object和事件驱动EventDriven并具有安全性能的脚本语言。
一个简单的案例 问题提出张老太养了两只猫猫一只名字叫小白今年3岁白色。
还有一只叫小花今年10岁花色。
请编写一个程序当用户输入小猫的名字时就显示该猫的名字年龄颜色。
当用户输入小猫名错误则显示张老太没有这只猫猫。
//解决方法把猫的属性集中创建一种新的数据类原型对象/类 //用面向对象的方法来解决上面的问题 //这里就是一个Cat类 function Cat //如果你这样用 //Cat//函数 var cat1new Cat//类 //这时cat1就是一个对象实例 cat1.namr”小白” cat1.age3 cat1.color”白色” //从上面的代码我们可以看出 //1. js中的对象的属性可以动态的添加 //2.属性没有限制. 创建对象的方式有五种 在js中一切都是对象 window.alertPerson.construcotr 输出function Functionnative code 思考如何判断一个对象实例是不是Person类型 方法一 方法二 补充说明带var和不带var的区别 //全局变量 var abc89 function test //在函数里如果你不带var则表示使用全局的abc变量 //如果你带上var则表示在test中定义一个新的abc变量。
abc900 test window.alertabc ① 若test函数里的abc不带var则输出900 ② 若test函数里的abc带var则输出89 类原型对象与对象 ① 创建对象实例 var 对象名new 类名/原型对象名 ② 访问使用对象实例的成员变量 1 对象实例名.属性名 2 对象实例名“属性名”该方式可以实现动态的访问变量。
如下 function Person var p1new Person p1.name”Sunny” window.alertp1.name var kk”Su””nny” window.alertp1kk Js中内存释放 Js还主动提供一种方法主动释放内存 delect 对象名.属性名//这样就会立即释放 对象 this 如何定义类 function 类名 this.属性名//公开属性 var 属性名//私有属性 ① “this.属性名”公开属性可以通过“对象名.属性名”来直接访问。
② “var 属性名”私有属性只能通过对象的“内部函数”来访问。
this不能放在类的外部使用即只能放在类内部使用否则调用者就变成了window. 对象----成员函数方法 比如我们希望对象不但有属性还希望他们有行为。
行为在程序中要靠函数来体现 ① 添加speak函数输出 我是一个好人。
② 添加jisuan函数可以计算从1…1000的结果。
③ 修改jisuan函数该方法可以接收一个数n计算从1…n的结果。
function Personnameage this.namename this.ageage this.showfunction //this.show是公开的函数. document.writeln名字this.name this.jisuanfunctionn var res0 forvar i0i输出function Objectnative code window.alertdog.namedog.age dog.fun1 有时我们会看到这样一种调用方法 函数名.call对象实例//这样调用该函数的this就只是对象实例。
面向基于对象编程进一步认识----for….in var dogname:小明sayHello:functionabwindow.alert结果是ab //循环列出dog对象的所有属性和方法 forvar key in dog window.alertdogkey //循环列出window对象的所有属性和方法 javaScript 面向对象编程的三大特性 ① 封装 Js提供有以下几种控制方法和属性的访问权限 公开级别对外公开 私有级别类本身可以访问不对外公开. 案例 我们前面学习过通过prototype给所有的对象添加方法但是这种方式不能去访问类的私有变量和方法 案例 function Person this.nameabc var age90 this.abcfunction window.alertabc function abc2 window.alertabc2 Person.prototype.fun1function window.alertthis.name //ok this.abc //abc2 //no ok //window.alertage //no ok var p1new Person p1.fun1 fun1 //no ok prototype的思考: ② 继承 1 为什么需要继承 问题 解决方法如下 特别说明① 通过对象冒充js可以实现多重继承的效果。
用的少 ② Object类是js所以类的基类。
js的重载和重写 重载js中不支持重载即不可以通过参数的个数 来决定调用哪个函数但是因为js本身支持可变参数所以可以看成天然支持重载 重写子类可以重新写函数来覆盖父类的某个方法. ③ 多态 js实际是无态的是一种动态语言一个变量的类型是在运行的过程中由js引擎来决定的所以说js天生就支持多态。
补充讲解闭包闭包gc 解释1 闭包和gc是相关的 2 闭包实际上是涉及到一个对象的属性何时被gc的处理的问题 3 怎样才能对对象的属性形成一个闭包 /closure/ function A var i0 function b window.alerti return b A//此时内存中i空间被gc处理 var cA//这种用法gc不会把i当作垃圾 c//输出0 c//输出1从而证明i变量被闭包