javascript高级特性
01_javascript相关内容
02_函数_Arguments对象
03_函数_变量的作用域
04_函数_特殊函数
05_闭包_作用域链&闭包
06_闭包_循环中的闭包
07_对象_定义普通对象
08_对象_定义函数对象
09_对象_内建对象
10_原型_为函数对象增加属性或方法
11_原型_利用函数对象本身重写原型
12_继承_函数对象之间的继承
13_继承_普通对象之间的继承
javascript高级特性(面向对象):
* 面向对象:
* 面向对象和面向过程的区别:
* 面向对象:人就是对象,年龄\性别就是属性,出生\上学\结婚就是方法.
* 面向过程:人出生、上学、工作、结婚、生子、去世整个过程.
* 对象和类的区别:
* 类:类比作一堆美女.
* 对象:对象就是范冰冰.
* javascript的开发工具:
* WebStrom开发工具,在国内被专业的前端开发人员称之为js神器.
* 代码提示功能非常强大.
* javascript的扩展内容:
* 服务器端开发人员来讲,之前的javascript基础内容够用.
* javascript高级特性的目的:
* 在目前服务器端开发人员中,增加竞争力.
* 面向专业前端开发人员应聘.
* javascript语言的发展趋势:
* 每年全球开发语言的排行榜:第7名.
* 开发客户端、服务器端、移动端(phoneGap)
* 预测javascript语言可能成为下一代企业级开发语言.
* 函数:
* Arguments对象:用来模拟函数重载的效果.
* 变量的作用域:
* 作用域:
* 全局域
* 函数域
* 变量:
* 全局变量:全局域+函数域
* 局部变量:当前函数域
* 特殊情况:
* 定义局部变量时,不使用var:局部变量被定义为全局变量.
* 当全局变量与局部变量同名时:在函数域中只能访问到局部变量.
* 特殊的函数:
* javascript中的函数:
* 三种定义方式:
* function 函数名(参数){}
* var 函数名 = function(参数){}
* var 函数名 = new Function(参数,函数体);
* 特殊函数:
* 匿名函数
* 回调函数
* 自调函数
* 内部函数
* (了解)返回函数的函数
* 作用:多用于javascript代码的优化.
* 原始类型与引用类型:类似于Java中的int与Integer.
* 原始类型:
* undefined
* null
* number
* string
* boolean
* 引用类型:
* Object
* Number
* Boolean
* String
* 问题:
* if(undefined==null):返回true.
* new Object();
* 闭包:非常重要的一个概念.
* 作用域链:
* 变量的作用域具有传递性.
* 闭包:参看笔记.xls文档
定义:函数可以使用函数之外定义的变量。
编写的三点需求:同时满足
需求:
* 在全局域中可以访问函数n()
* 在函数n()中依旧可以访问局部变量b
* 变量b必须定义在函数fn()中
* 目前不要求大家可以编写闭包结构。
* 作用:
* 代码之间的低耦合。
* 局部变量的共享。
* 提高安全性。
* 局限性:
* n函数的初始化,必须在fn()中
* 调用函数n,必须先调用fn()
* 对象:
* 定义对象三种方式:
* var 对象名 = new Object();
* var 对象名 = {key : value, key : value}
* 函数即对象,函数对象:function 对象名(){}
* 对象具有属性和方法:
* 普通对象:
* 调用:
* 对象名.属性名;
* 对象名.方法名();
* 修改:
* 对象名.属性名 = 新的属性值;
* 对象名.方法名 = 新的function
* 增加:
* 对象名.新的属性名 = 新的属性值;
* 对象名.新的方法名 = 新的function
* 删除:
* delete 对象名.属性名;
* delete 对象名.方法名;
* 函数对象: 又叫构造器 构造函数
* 在使用函数对象的属性或方法之前,new对象.
* 内建对象:
* 数据封装类对象
* Array
* new Array() //object
* [] //object
* String
* new String("aaa"); //object
* "aaa"; //string
* Object
* Object是javascript所有对象的父级.
* 在javascript得到对象最简单形式:new Object()
* new Object()与var 对象名 = {}等价
面试题:以下哪个描述是错误的?
A var a = []; //数组
B var b = {}; //对象
C var c = //; //正则表达式 空正则表达式 /^[0-9]{10}$/
D var d = (); //错误
面试题:alert("xxxyyy")方法提示框中换行
* 工具类对象
* Date
* xxxx年xx月xx日 hh:mm:ss
* Math
* 生成随机数:random(),0-1范围
var number = parerInt(Math.floor(Math.random() * 4))
* RegExp
*匹配方法:test()
* 错误类对象
* Error
* 异常对象:try..catch
* 原型:非常重要的一个作用.
* prototype:函数本身就是一个对象,原型就是函数对象的一个属性.
* 需要注意的是:
* 创建了函数对象,原型自动创建(不能手动创建).
* 原型的调用:函数对象.prototype.
* 作用:
* 利用原型为函数对象增加属性和方法.
javascript面向对象:
* 函数
* Arguments对象:模拟函数重载
* 变量的作用域:
* 作用域:
* 全局域
* 函数域
* 变量的分类:
* 全局变量:全局域+函数域
* 局部变量:当前函数域
* 特殊情况:
* 定义局部变量时,不使用var:局部变量被自动定义为全局变量
* 当全局变量与局部变量同名时,在函数域中只能访问到局部变量
* 闭包
* 作用域链:变量的作用域是具有传递性的
* 闭包:函数可以使用函数之外定义的变量
* (了解)循环中的闭包结构
* 对象
* 定义对象的三种方式:
* new Object()
* JSON:{key:value,key:value...}
* 函数对象(构造器):function 对象名(){this.属性名=属性值;}
* 操作对象的属性和方法:
* 调用:
* 对象名.属性名(方法名)
* 对象名['属性名(方法名)']
* 修改:
* 对象名.属性名 = 新的属性值;
* 增加
* 对象名.新的属性名 = 新的属性值;
* 删除
* delete 对象名.属性名(方法名)
* 内建对象:
* 数据封装类对象:
* Array
* String
* "" //string
* new String() //object
* Number
* 工具类对象:
* Date
* 获取当前时间
* Math
* 生成随机数(0-1)
* RegExp
* 匹配方法:test()
* 错误类对象:
* Error
* 异常对象
* 原型
* 定义:函数即对象,原型其实就是函数对象的一个属性。
* 注意:
* 原型是随着函数对象的创建而创建的(原型不能手动创建).
* 原型的调用:函数对象.prototype.
* 作用:
* 利用原型为函数对象增加属性和方法.
* 当函数对象本身的属性或方法与原型的属性或方法同名时:
* 函数对象本身的属性或方法的优先级更高.
* 内建对象具有一个属性:原型
* 利用原型为内建对象增加属性或方法?可以
* 支持:
* 利用这种特性,使得javascript代码更灵活.
* 反对:
* 为老版本扩展的内容,可能出现在下一个版本中.
* 我们站在这里.
* 扩展内容:
* 封装工具类 -> 库 -> 框架
* 建议使用库,反对使用框架。
* 浏览器内核:
* IE浏览器:IE6.0 IE11
* 其他浏览器:webkit(苹果)
* 谷歌浏览器
* 火狐浏览器
* 苹果浏览器
* 众多浏览器:
* 百度浏览器:号称自主内核v5
* 腾讯浏览器:号称自主内核x5
* 遨游浏览器:号称自主内核
* 不同浏览器内核集成的javascript引擎(v6)是不一样.
* 继承
* 问题:
* javascript中不存在类的概念(没有class关键字).
* javascript没有extends关键字(继承).
* javascript中的继承是函数对象之间的继承.
* 原型链
* javascript的普通对象之间存在继承吗?了解 实际是浅复制
javascript高级特性的更多相关文章
- javascript高级特性(面向对象)
javascript高级特性(面向对象): * 面向对象: * 面向对象和面向过程的区别: * 面向对象:人就是对象,年龄\性别就是属性,出生\上学\结婚就是方法. * 面向过程:人出生.上学.工作. ...
- JavaScript高级特性-数组
1. JavaScript中的数组 在C++.Java中,数组是一种高效的数据结构,随机访问性能特别好,但是局限性也特别明显,就是数组中存放的数据必须是同一类型的,而在JavaScript中,数组中的 ...
- JavaScript高级特性-创建对象的九种方式
1. 对象字面量 通过这种方式创建对象极为简单,将属性名用引号括起来,再将属性名和属性值之间以冒号分隔,各属性名值对之后用逗号隔开,最后一个属性不用逗号隔开,所有的属性名值对用大括号括起来,像这样: ...
- JavaScript高级特性-实现继承的七种方式
声明和约定: 在C++和Java中,我们可以通过关键字class来声明一个类,在JavaScript中没有这个关键字,但我们知道可以通过new一个function创建对象,这个function类似C+ ...
- JavaScript 高级特性
1. 原型Prototype 1.1 构造函数 所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量.对构造函数使用new运算符,就能生成实例,并且this变量会绑定 ...
- JavaScript高级特性之原型
JavaScript的原型 原型prototype属性仅仅适用于函数对象(这里的函数对象是自己为了理解更好定义的,普通对象是没有原型属性的) 1.研究函数原型: <script type=&qu ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
- 【javascript学习——《javascript高级程序设计》笔记】DOM操作
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口).DOM描绘了一个层次节点树,允许开发人员添加.移除和修改. 1.节点层次 <html> <head& ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
随机推荐
- MySQL中存储过程+事件的使用方法
一.背景 将界面操作日志存储在MySQL数据库中的operationlog表中,如果该表不能自动备份,表中的数据会越来越多,影响速度.可以定期将表中数据备份到另外一个表中来解决. 二.解决方案 1.使 ...
- c#接口容易被忽视的问题
今天在看"并发集合"的时候,接口IProducerConsumerCollection<T> 有一个方法是TryAdd(),表示"试图"去添加,然后 ...
- DGV换行操作
DGV.RowsDefaultCellStyle.WrapMode = DataGridViewTriState.True;
- C++使用protobuf传输中间包含\0的字节数组
The C++ implementation of protocol buffers returns the byte and string types as std::string. This st ...
- TextView实现歌词同步
利用TextView实现歌词同步显示,这是一个简单的利用TextView实现滚动实时显示歌词的. 里面的内容都已经写上了详细的注释.里面播放音乐的时候歌词同步展示. 做媒体这块的朋友可以学习一下,练练 ...
- Nginx的nginx.conf配置文件中文注释说明
#运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 erro ...
- JQuery动画效果
jquery动画效果常用方法 1.show()显示效果语法:show(speed,callback)Number/String,Function speend为动画执行时间,单位为毫秒.也可以为slo ...
- 防御病毒邮件得看U-Mail邮件网关
其实在邮件通讯中,那些病毒.垃圾邮件.钓鱼软件也相当危险,在海量邮件中,你没法确定什么时间.哪一封会发起进攻,攻击的目标都有谁?但是一旦得逞,造成的损失又特别大. 最近美国同行又发现了一个新骗局:美国 ...
- hdu5834
题目让求得是从任意一点出发可以不回来得到的最大的价值 这应该不算特别水的树形dp了,它不止要从上往下dfs,后来海要重新dfs,根据父亲节点更新儿子节点,算是正常的树形dp中比较简单的吧. 思路: 先 ...
- Math
Math.sin(t) // sin(t) Math.power(x,2*i) // x的2i次方 (double)(Math.round(sum*1000000))/1000000; / ...