[TOC]
### js中的“类“
~~~
1. js使用带参带参函数模拟java中的类(es5)
2. 也可以使用es6语法创建类
~~~
demo1:
~~~
function Person(name, age) {
this.name = name;
this.age = age;
this.eat = function () {
console.log("吃饭");
}
}
~~~
### demo2(es6):
~~~
<script>
// es6创建一个类
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayName() {
console.log(this.name);
}
}
let di = new Person("name", "age");
console.log(di)
</script>
~~~
### js中的继承:
~~~
1. js中每一个对象都有__proto__(双下划线属性)实质上是个指针,指向上一级类或object,指向它的原型对象,同时共享原型上的方法
(当给它的原型上添加方法、属性时 在对象中找改方法、属性 找不到的情况下 通过__proto__找原型上的内容)
2. js中的继承基于原型继承
3. 获取原型的所有方法 Object.getPrototypeOf(tong);
~~~
### es5中js中实现属性的继承:
~~~
1. 在不使用this关键字的时候(麻烦):
<script>
var Person = function (name, age) {
this.name = name;
this.age = age;
}
Person.prototype.see = function () {
console.log(this.name + "爱看片")
}
function Teacher(skill) {
//属性继承(实现在继承的基础上再添加新的属性)(但是属性这样继承很麻烦于是就出现了使用 .call(this,,)来继承父类中的属性)
this.skill=skill;
}
var cheng = new Teacher();
cheng.name="tong";
cheng.age=18;
cheng.skill="bb"
console.log(cheng);
</script>
2. 使用(较简单):
<script>
var Person = function (name, age) {
this.name = name;
this.age = age;
}
Person.prototype.see = function () {
console.log(this.name + "爱看片")
}
function Teacher(name,age,skill) {
//属性继承(实现在继承的基础上再添加新的属性)(但是属性这样继承很麻烦于是就出现了使用 .call(this,,)来继承父类中的属性)
Person.call(this,name,age);//相当于 this.name = name; this.age = age;
this.skill=skill;
}
var tong=new Teacher("tong",18,"bb");
console.log(tong)
//方法继承
Teacher.prototype = new Person(); //继承
Teacher.prototype.constructor = Teacher;// 要加上这句不加的话teacher的构造器指向的person 加上实现真正的继承
console.log(Teacher.prototype.constructor);
// var cheng = new Teacher();
// cheng.name="tong";
// cheng.age=18;
// cheng.skill="bb"
// console.log(cheng.name);
</script>
~~~
### es5中js中实现 方法 的继承:
~~~
Teacher.prototype = new Person();
~~~
### es6中的继承 (与java相通)
~~~
<script>
class Person{
constructor(name,age){
this.name = name;
this.age = age;
}
sayName(){
console.log(this.name);
}
}
class Teacher extends Person{
constructor(name,age,skill){
super(name,age);
this.skill = skill;
}
}
var cheng = new Teacher("cheng",18,"pp");
cheng.sayName();
console.log(cheng.name);
console.log(cheng);
</script>
~~~
- JavaScript介绍
- js基本语法
- 调试方法
- 标识符
- 数据类型(基本,引用)
- 基本数据类型
- 引用数据类型
- 严格模式.
- 全局变量和局部变量
- DOM 节点
- DOM 改变元素内容(样式 内容)
- 节点改变元素内容(通过父子节点找到元素然后操作)
- 添加元素
- 设置 移除 属性
- DOM下的事件
- 知识点整理
- 异步
- Ajax
- this指向问题
- 设备类型检测(手机 平板 电脑)
- 函数
- 函数的参数
- 重载
- 数据类型
- 构造函数
- 返回上一个网页
- 数组 (重点)
- 增加数组内容
- 删除数组元素
- 复制数组
- 修改数组元素(功能强大实现 增 删 改)
- 数组元素查询
- 数组遍历
- 最值
- 展开语法
- join
- 排序问题
- 求和
- 颠倒数组
- 判断是不是一个数组
- 二维数组
- 数组和字符串之间转换
- 数组去重
- 将jquery对象转为javascript对象
- 元素偏移量
- 获取一个元素距离顶部的距离
- 可视区域宽高
- 布局视口 (移动设备)
- 文档碎片
- 表格中的 thead tbody
- 获取元素宽度
- 滚动区域宽高
- div滚动条设置
- 使用 offsetWidth 设置父元素宽度和子元素宽度之和一样
- 字符串的方法
- js功能实现
- 点击显示 隐藏
- 点击变色 兄弟元素隐藏.
- 点击显示隐藏区域.
- 兼容性问题.
- 选择按钮,
- 获取外部样式
- 点击弹出下标
- 通过属性改变img 的src
- 小米登录 es6实现js
- try catch
- 小米登录es5实现js
- js实现导航栏点击加载多个页面
- js实现网页之间的跳转和在指定div加载页面
- iframe 高度实现自适应
- js 获取滚动条距离顶端的距离
- jQuery animate() 方法 动画效果
- fade(js实现遮罩层渐变色)
- js轮播实现
- 超哥轮播js
- 轮播动画原理
- 数组实现瀑布流
- 电子表计时器date
- 从豆瓣接口上取数据实现搜索功能(重点!!!!)
- 封装
- 不使用js-ajax 使用VueResource实现数据请求
- 需要常看的知识点
- 移动端响应布局rem
- rem+vw
- 原型
- JS的模块化如何解决
- ES5和ES6模块化写法
- js内置对象
- 结构赋值es6
- 字符串模板 分割字符串
- 谈基本数据类型中的方法(本不带有方法)
- Math
- date
- 正则
- 备选字符集
- 连号的备选字符集
- replace() 查找替换(过滤)
- 量词
- 不确定的数量
- search找下标
- test()检验是否包含正则表达式
- 实例
- 验证电话号码
- 邮箱验证
- 将指定内容过滤(天猫 淘宝)
- 预定义字符集(简化)
- 严格匹配 ^ $
- Ajax
- http get post
- $.get()和$.post()详解
- jquery-ajax 数据请求
- 使用Vue Ajax在网页中渲染数据
- axios向服务器端get,post数据(重点)
- 跨域
- 原生Ajax
- 原理步骤 json解析字符串
- 多态
- js中的面向对象
- js中的类和继承
- 原型和原型链
- 参数表达式
- 字符串中常用的方法
- mock.js
- scrollReveal 滚动显示
- Node.js模块里exports与module.exports的区别