javascript 知识点梳理 -- 整理自广州传智王老师

Javascript

Javascript中的数据类型

在JavaScript中一共有六种数据类型:

1)String   :字符串类型,在JavaScript中可以通过双引或单引括起来

2)Number  :数值类型,在JavaScript是没有整形与浮点型之说的,所有的数值类型都属于Number类型,10  10.88  5.66

3)Boolean  :布尔类型,其值可以是true或false

4)Undefined :变量有声明,但未赋值

5)Null      :空类型

6)Object    :对象类型,Array数组也是属于Object类型

for…in循环(主要用于遍历对象、数组)

自调用匿名函数

基本语法:

arguments参数

arguments是函数的参数列表,其功能类似数组,但其并不是一个真正的数组(类数组)

使用arguments属性在定义函数的时候无须指明函数的参数列表,在函数调用时可以任意填充

实现一个函数的多种功能

示例代码:

作用域链

说明:

当程序运行到第9行时,首先在全局作用域中声明一个变量i=100,然后代码向下执行,

执行到第10-19行时,会声明fn1函数,但是其内部函数体并没有被执行,

当运行到第21行时,系统会调用fn1函数,函数主程序回到第11行开始执行函数体,

当执行到第18行时,系统会执行fn2内部的程序,执行到第12行时,由于遇到了一个变量i,那么系统首先会在当前作用域中寻找var声明语句,由于没有找到,其会到上一级fn1函数中继续寻找,由于也没有找到,其会到上一级全局作用域去寻找,如找到则直接替换,否则会在全局作用域自动声明该变量,我们把这个过程就称之为作用域链。

作用域链原理图:

Javascript事件编程

需要注意的几个事件:

onload  :    载入页面时触发

onblur  :   失去焦点触发

onfocus : 获得焦点时触发

onchange :   事件改变时

onselect:  事件选择的受触发

onkeydown:  键盘按下时触发

onkeyup: 键盘松开时触发

onsubmit :   提交时触发

事件绑定:

行内绑定 <元素 属性列表 事件=”事件的处理程序“ />

动态绑定

事件绑定

事件监听

事件监听的定义和使用

1)IE模型浏览器(IE或者基于IE内核的浏览器)

基本语法:

attachEvent(type,callback);

作用:为对象绑定事件监听

参数说明:

type:事件类型(onclick,onfocus)

callback:事件的处理程序

调用语法:

dom对象.attachEvent(type,callback);

2)W3C模型浏览器(火狐、谷歌)

addEventListener(type,callback,capture);

作用:为对象绑定事件监听

参数说明:

type:事件类型,不带’on‘前缀(click,focus,blue)

callback:事件的处理程序

capture:使用的事件模型,Boolean类型,true:捕获模型  false:冒泡模型(默认)

IE模型浏览器只支持冒泡模型

调用语法:

dom对象.addEventListener(type,callback,capture);

解决事件监听的兼容性问题:

<script type="text/javascript">

function addEvent(obj , event , callback){

//如果是w3c浏览器

if(obj.addEventLisenter){

obj.addEventLisenter(event , callback);

}else{

event.attachEvent(‘on‘+event , callback);

}

}

</script>

移除事件监听

注:在移除事件监听时,要特别特别注意:如果我们想移除某个事件监听,那么该事件的处理程序必须是一个有名函数。

基本语法:

IE模型浏览器:

attachEvent(type,callback); 添加事件监听

detachEvent(type,callback); 移除事件监听

参数说明:

type:事件类型

callback:要移出的事件名称

W3C模型浏览器:

addEventListener(type,callback,capture); 添加事件监听

removeEventListener(type,callback);   移除事件监听

type:事件类型

callback:要移出的事件名称

解决兼容性问题:

<script type="text/javascript">

/*

*@param   obj           要操作的对象

*@param   event         事件名

*@param   callback      所要取消的方法

*/

function removeEvent(obj , event , callback){

//w3c 模型

if(obj.removeEventListener){

obj.removeEventListener(event , callback);

}else{

//ie模型

obj.detachEvent(‘on‘+event , callback);

}

}

</script>

禁止事件冒泡

IE模型浏览器:

window.event.cancelBubble = true;

W3C模型浏览器:

function(event) {

event.stopPropagation();

解决兼容性问题:

<script type="text/javascript">

/*

*   @param   obj    要操作的对象

*   @param   event  事件

*/

function NoBubble(event){

//ie模型

if(window.event){

window.event.CancelBubble = true;

}else{

//w3c模型

event.stoppagation();

}

}

</script>

禁止js 默认行为

IE模型浏览器

window.event.returnValue = false;

W3C模型浏览器

function(event) {

event.preventDefault();

}

解决兼容性问题

<script type="text/javascript">

/*

* @param   event   事件名

*/

function NoDefault(event){

//ie模型

if(window.event){

window.event.returnValue = false;

}else{

event.preventDefault();

}

}

</script>

Window对象(以下注意)

l moveBy(x,y) :窗口移动(相对移动)

l moveTo(x,y) :窗口移动(绝对移动)

l resizeBy(x,y) :调整窗口大小(相对大小)

l resizeTo(x,y) :调整窗口大小(绝对大小)

l scrollBy(x,y) :相对滚动

l scrollTo(x,y) :绝对滚动

Jsvascript的系统常用类

字符串类

l length  :返回字符串长度

l indexOf(string) :返回参数在字符串出现的位置

l substr(num1,[num2]) :返回截取后的字符串

l toLowerCase() :返回小写

l toUpperCase() :返回大写

l replace(str1,str2) :返回替换后的字符,把str2替换成str1

日期时间类

l indexOf(string) :返回参数在字符串出现的位置

l getFullYear() :返回完整年份 2015

l getHours() :返回小时

l getTime() :返回毫秒时间戳

数学类

l ceil(数值) :返回大于或等于该数的最小整数

l floor(数值)  :返回小于或等于该数的最大整数

l random() :返回0-1随机数

l round(数值) :返回四舍五入后的结果

Javascript自定义类的使用( js中一切都是对象)

创建:

functions   构造器( ){ }

创建类的目的之一在于保存更多的变量

Javascript中三大关键字

alert( p.constructor );   :返回原型对象所指向的构造器

alert( typeof p );   :返回对象的数据类型

alert( p instanceof person ); :判断某个对象是否是某个类的实例

this指向小技巧:

在JavaScript中,谁调用构造器,那么构造器中的this指针就指向谁。

Javascript中属性的删除

以通过delete方法对其删除。

基本语法:

delete 自定义对象.属性

Json对象

json对象就是一组数据的无序集合 ,这个集合是通过“名:值”对的形式进行表示的,在JavaScript可以通过一对花括号{}来定义这个集合

json对象的调用方式

基本语法:

json对象.名

运行以上代码可知:

json属于一个对象,其构造是系统中的Object类,其本质是Object类的一个实例。

原型对象及原型链

原型对象来自object

在原型对象创建过程中,系统会自动执行以下代码:

(Person.prototype) = new Object();

通过以上图解可知:

所有的原型对象其实质都是Object类的实例。

说明:在面向对象程序设计中,当系统执行以下代码

对象 = new 类();

那么所创建的对象会自动拥有类中属性和方法。

通过以上代码可知:

所有的原型对象都会自动继承Object类中的所有属性与方法,当我们访问一个不存在的属性和方法时,系统首先会到当前构造器的原型对象中查找,又由于所有原型对象都是由Object构造器创建而来的,那么当我们访问一个不存在的属性或方法时,系统自动到Object构造器中去寻找。

”原型继承“

p1.address à Person构造器的原型对象àObject构造器

原型链

说明:当系统加载Object构造器时,会自动生成Object原型对象,当我们访问一个不存在的属性或方法时,系统会到上一级的原型对象中去寻找,如找不到,会继续向上一级原型对象中寻找,我们把这种链式操作就称之为”原型链“

原型链:

p1对象.属性àPerson构造器的原型对象àObject构造器的原型对象à上一级原型对象寻找

证明:

object类

Object类是所有类的基类

当我们创建原型对象时(系统、自定义),会自动执行以下代码:

类.prototype = new Object();

原理图:

说明:当p1对象访问一个不存在的属性或方法时,系统会到Person构造器的原型对象去寻找,又由于原型对象是Object类的实例,所以原型对象会自动继承Object构造器的所有属性和方法,所以我们的p1对象会自动继承Object类中的所有属性和方法,我们把这种链式操作就称之为“原型继承”

证明Object类是所有类的基类 (hasOwnProperty)

在Object类中有这样一个方法hasOwnProperty()主要用于判断当前对象是否具有某个属性,返回boolean类型的值,true或false

静态属性

语法

类名.属性 或构造器.属性   Person.num

静态方法

在JavaScript中,静态方法其主要用于操作静态属性

闭包

“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

l 闭包即函数定义时,连同其定义环境的上下文,形成一个整体

l 不管该函数在哪儿运行,其对变量的访问,都要从定义处开始寻找

闭包的作用

1)读取函数内部的局部变量

2)让这些变量的值始终驻留在内存中

javaScript的中的垃圾回收机制详解

javascript 中的私有共有属性的模仿

公有属性:

基本语法:

this.属性= 公有属性

私有属性:

基本语法:

var 属性 = 私有属性

访问私有属性(闭包)

call与apply的定义和使用

call 的使用

基本语法:

call([thisObj[,arg1[,arg2[,argN]]]])

参数说明:

thisObj:要指向的对象

arg1,arg2,argN…:要传递的参数

aplay的使用

apply([thisObj[,argArray]])

参数说明:

thisObj:要指向的对象

[argArray]:要传递的参数,要求是一个数组

作用:使用指定的对象调用当前函数

javascript中类的继承的(模拟)实现

通过Object原型对象实现继承

基本语法:

Object . Prototype . ext = function ( parObject ){

for(var  i  in  parObject){

this[ i ] = parObject[ i ];

}

};

示例代码:

通过call或apply方法实现类的继承

通过原型对象实现类的继承

时间: 2024-08-24 06:20:51

javascript 知识点梳理 -- 整理自广州传智王老师的相关文章

xml 知识点梳理 -- 整理自广州传智王老师

xml知识小结 xml的结构 文档声明: <?xml version='1.0' encoding='utf-8'?> 元素:(标签 标记) 元素属性 一个元素可以有多个属性 属性值一定要用引号(单引号或双引号)引起来 属性名称的命名规范与元素的命名规范相同 元素中的属性是不允许重复的 标签属性所代表的信息也可以被改成用子元素的形式来描述 处理指令 必须以"<?"作为开头,以"?>"作为结尾 xml指令 xml-stylesheet指令 例:

广州传智博客黑马训练营.Net15期

7 张扬波 MVC大项目 6 张扬波 MVC 3 胡凌浩 HTML&JS 2 基础加强+三层 5 张扬波 企业站点(asp.net)&EF 4 江佳恒 ASP.net 1 王绚文 dotnet基础 下载地址:http://fu83.cn/thread-24-1-1.html

DIV + CSS综合实例【传智PHP首页】

1.首页结构 2.准备工作 所有素材放到与当前网页同级的目录下: 网页背景色.背景图: 主页宽度:1000px: 创建CSS文件,将CSS文件引入到当前的HTML文件中. 3.实现 效果图: 源代码: HTML代码: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&

传智播客PHP培训到底实力有多强!!?

传智播客的实力强到什么程度?现在让你亲眼见证: 北京传智播客一个做后期的同事,辞职学android安卓开发:广州传智播客一个美女班主任,也辞职报了网页平面班.这就是连传智播客成员都无法抵挡的实力,还在犹豫要不要学软件开发.还在考虑去哪里学软件开发的你,震撼了吗!!?  猛戳链接--http://cd.itcast.cn 进去官网了解详情!传智播客PHP培训到底实力有多强!!?

揭秘传智播客班级毕业薪资超7k的内幕系列之四----汽车工的华丽转身

---不是本科毕业?不是计算机专业?做过电子厂?做过数控?看传智中专生侃项目,"侃晕"项目经理.从流水线上华丽转身,8.5k高薪再就业 系列三承诺写写上海传智Java六期提前就业的一位同学,为什么写他?由于从他身上我看到了非常多正能量,看到了一个不具备从事IT业基础知识的屌丝怎样不甘于现状怀揣改变生活,提升职业层次的梦想.经历层层"险关",终于选择传智.学有所成,华丽转身,以8.5k较高薪资就业,让"梦想照进现实": 首先介绍下该同学,小陈是中专

Javascript重要知识点梳理

Javascript重要知识点梳理 说明 Javascript流程控制 js中常用的数据类型 var关键字的使用 if – else if – else switch while for Javascript常用函数 1.  字符串函数 substring indexOf lastIndexOf charAt replace split toLowerCase toUpperCase 2.  数学运算函数 3.  数据类型转换函数 parseInt parseFloat Math.abs Mat

2017最新整理传智播客JavaEE第49期 基础就业班

2017最新整理传智播客JavaEE第49期 基础就业班 可以说是一套不可多的的教程,有条件的同学建议报名培训,效果更佳,没有条件的朋友就买个培训课堂上录制的视频吧. 视频教程推送门:http://blog.sina.com.cn/s/blog_1706603600102x07j.html

2016最新整理传智播客第15期C,C++基础班就业班全套

推荐优秀课程,毕业就业首选C++培训课程 视频地址:http://blog.sina.com.cn/s/blog_1706603600102wxlb.html 传智播客C++第15期

与传智播客解不开的牵扯——来自《传智特刊》十七期Java老学员专访

传智播客成都校区Java就业班学员--来自<传智特刊>十七期老学员专访 我是一名应届毕业生,大学学的专业是公共事业与管理,现在从事的工作是Java 工程师.也许大家会惊讶,一个学公共事业与管理的学生,怎么会进入IT 这个行业,而且从事的是计算机编程相关的工作?是的,在我静下来时也会想,我是怎么从公共事业与管理专业与跨行到IT 行业的.在仔细梳理自己的编程之旅后发现,一切都来得那么顺理成章. 邂逅传智播客 记得刚进入大学的时候,我对电脑一窍不通,大学期间偶然的机会接触到了媒体制作相关软件,从此和