数据持久化
-服务端存储
-数据库:mysql(sql语句:curd) , mongohb : 对象形式存储
-文件存储
-客户端存储
-cookie 存储 村小数据
-webstorage
-localstorage : 没有时效性 ,一直存在同源下面
-sessionStroage : 有时效性,在浏览器关闭的时候销毁
-操作一样的
-存 setItem();
-获取 : getItem();
-删除
-删除指定 removeItem("键名");
-删除所有 clear();
闭包
- 函数对于外部环境的引用 ,或者说外部环境把函数包围起来;
-闭包不会被销毁
-闭包的特性''
-模拟私有成员
-占用内存 , 引用闭包的变量 设置成null 就可以了
-缓存特性 , 变量不会被销毁的特性 ,局部变量
继承
-ES5的继承
-构造函数的继承
-通过改变类的this到父类中去:`call() apply() bind()`
-原型的继承
-原型简单的赋值继承 会造成引用问题
-深拷贝
-通过in构造函数搭桥(组合继承)
-覆盖原本的constructor 固有属性
-重新让constructor 指回来
// 原型的继承
function Dad(name,age){
this.name = name;
this.age = age;
}
/*
Dad.prototype = {
hobby:function(){
console.log("喜欢篮球");
}
}
*/
Dad.prototype.hobby = function(){
console.log("喜欢篮球");
}
function Son(name,age){
Dad.call(this,name,age); // 子类只能继承父类的构造函数;
this.height = "178cm";
}
// 继承父类原型 :1.简单的赋值会出现引用问题; 2.子类的默认属性constructor 会被覆盖
// Son.prototype = Dad.prototype;
// 引用问题: 1.深拷贝 2.创建一个新的构造函数 来切断 子类和父类原型之间的关系
function Link(){};
Link.prototype = Dad.prototype;
Son.prototype = new Link(); // 通过一个 中间的空构造函数切断2个类原型之间的关系; 组合继承;
// 把原本的constructor 在指回来
Son.prototype.constructor = Son;
Son.prototype.hobby = function(){
console.log("喜欢足球");
}
let son = new Son("张三",20);
// console.log(son);
son.hobby();
let dad = new Dad("张三",50);
dad.hobby();
/*
let obj1 = {
name:"张三"
}
let obj2 = obj1;
*/
/* ES5的继承 一、构造函数的继承 call 、apply 、bind 改变this指向实现继承 二、原型的继承 1.原型简单赋值的引用问题 (深拷贝,搭桥)2.constructor固有属性的覆盖问题 ,重新指回来就可以了;
*/