extends 通过 extends 实现类的继承。
super()
1.子类 constructor 方法中必须有 super ,
且必须出现在 this 之前。
2.调用父类构造函数,只能出现在子类的constructor构造函数。
3.调用父类方法, super 作为对象,在普通方法中,指向父类的原型对象,
子类需要访问父类中的静态值,需要在子类的静态方法中访问,在静态方法中,指向父类
class Father {
test(){
return 99;
}
static test1(){
return 100;
}
}
class Child2 extends Father {
constructor(){
super();
// 调用父类普通方法
console.log(super.test());
}
static test3(){
// 调用父类静态方法
return super.test1()+2;
}
}
console.log(Child2.test3());
let mytest = new Child2();
Object.setPrototypeOf() 静态方法可以将一个指定对象的原型
(即内部的 [[Prototype]] 属性)设置为另一个对象或者 null。
module模式
export导出
import导入
as不同模块导出接口名称命名重复, 使用 as 重新定义变量名。
1.导出的函数声明与类声明必须要有名称(匿名名称)(export default 命令另外考虑)。
2.不仅能导出声明还能导出引用(例如函数)。
3.export 命令可以出现在模块的任何位置,但必需处于模块顶层。
4.import 命令会提升到整个模块的头部,首先执行
5.export 命令导出的接口名称,须和模块内部的变量有一一对应关系。
6.导入的变量名,须和导出的接口名称相同,即顺序可以不一致。
7.import只读属性:不允许在加载模块的脚本里面,改写接口的引用指向,即可以改写 import 变量类型为对象的属性值,
不能改写 import 变量类型为基本类型的值。
8.import单例模式:多次重复执行同一句 import 语句,那么只会执行一次,而不会执行多次。import 同一模块,
声明不同接口引用,会声明对应变量,但只执行一次 import 。
9.静态执行特性:import 是静态执行,所以不能使用表达式和变量。
js中ajax异步
1.创建XMLHttpRequest 对象
http和https
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
let http = new XMLHttpRequest();
请求方式
请求方式分为:get、post、put、delete
get方式:偏向获取数据;
post方式: 偏向向后端提交数据;
put方式:偏向更新(全部更新);
delete方式:偏向删除信息;
2.请求 创建对象.open(请求方式,路径,异步)
创建对象.send()
http.open("get","http://jsonplaceholder.typicode.com/posts?id=99");
http.send();
http.open("post","http://jsonplaceholder.typicode.com/posts");
传值方式为JSON
http.setRequestHeader("Content-Type","application/json")
http.send(JSON.stringify({
"userId":10,
"title":"hello",
"body":"你好"
}));
传值方式为表单
http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.send("userId=10&title=hello&body=你好");
responseText 属性
如果来自服务器的响应并非 XML,请使用 responseText 属性。
http.onreadystatechange=function(){
if (http.readyState==4 && http.status==201){
var data = JSON.parse(http.responseText);
console.log(data);
}
}
console.log(http);
1.在一个文件或模块中,export、import 可以有多个,export default 仅有一个。
2.export default 中的 default 是对应的导出接口变量。
3.通过 export 方式导出,在导入时要加{ },export default 则不需要。
4.export default 向外暴露的成员,可以使用任意变量来接收。
第一种
import {userName,age} from "./day28.js";
第二种
import {userName as aaa,age as bbb} from "./day28.js";
第三种
import aaa from "./day28.js";
console.log(aaa)
第四种
import * as aaa from "./day28.js";
console.log(aaa);
Generator作用
Generator 函数,可以通过 yield 关键字,
把函数的执行流挂起,为改变执行流程提供了可能
Generator 有两个区分于普通函数的部分:
1.一是在 function 后面,函数名之前有个 * ;
2.函数内部有 yield 表达式。
3.其中 * 用来表示函数为 Generator 函数,yield 用来定义函数内部的状态。
done
此时函数还没有执行完, 返回对象的 done 属性值是 false,下面还有yield。
next 方法
一般情况下,next 方法不传入参数的时候,yield 表达式的返回值是 undefined 。
当 next 传入参数的时候,该参数会作为上一步yield的返回值。
yield 后面跟的值是value值,next(参数)==yield返回值需要用变量接收
function* func(){
console.log("one");
yield;
console.log("two");
yield {name:"zs"};
console.log("three");
return '3';
}
function* func(){
console.log("one");
var a = yield 99;
console.log("two"+a);
return "foo";
yield;
console.log("three");
return '3';
}
let f = func();
console.log(f.next());
console.log(f.next(10));