js高级-DAY04 一、今日学习内容 1.数据类型分类 基本数据类型number、string、boolean、undefined、null、symbol(独一无二的值)、bigInt(科学计算) 引用数据类型array、function、object 2.数据类型的内存分配 基本数据类型保存在栈中 引用数据类型保存在堆中,栈中存放它的地址,指向堆中的数据 3.变量的复制 基本数据类型传递的是值的拷贝 引用数据类型传递的是地址的拷贝 4.参数的传递 基本数据类型传递的是值的拷贝 引用数据类型传递的是地址的拷贝 5.深浅拷贝 5.1浅拷贝 特点:只拷贝一层 直接obj1=obj,obj和obj1指向一个地址,共享数据,相互影响 实现方法:(1)展开与算符 (2)for...in const obj1 = {}; (3)Object.assign(); 5.2深拷贝(1)JSON.parse(JSON.stringify(obj)); 缺点:有些情况不能成功拷贝;例如: un: undefined, //没有了 show: function () { },//没有了 reg: /\.css$/,//空对象 int: Infinity,//null fin: -Infinity,//null date: new Date(),//字符串 null: null (2)完美拷贝:引入lodash,const obj1 = _.cloneDeep(obj); (3)手写深拷贝tartget.hasOwnProperty(key)===判断对象属性是否在原型链 把函数处理成字符串:funciton.toString() 把转成字符串的函数生成一个新的函数:let newfun = eval("(" + funstr + ")") 步骤: 1.封装方法===(获取数据类型的方法)(获取是否是数组、对象、方法) 2.遍历===封装深拷贝 (1)判断类型{}/[ ] (2)循环要拷贝的目标 6.变量类型检测 基本数据类型typeof()---检测null(object)、【】(object) 引用数据类型instanceof() 语法:变量/ (实例对象) instanceof 构造函数 特点:变量的原型链上找得到后面的构造函数,就会但会true ,否则返回false Object.prototype.toString。call( ) 准确检测数据类型【object 构造函数】 7.继承ES5:寄生组合式继承 例如:静态方法---方法挂载在构造函数上,实例对象不能调用 Person.say = function () { return '说话' } 继承父类所有原型:Programmer.prototype = Object.create(Person.prototype); 此时子类构造函数会丢失,需要找回子类原型的构造函数 Programmer.prototype.constructor = Programmer; |
欢迎光临 菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育 (http://www.xingmaxueyuan.com/) | Powered by Discuz! X3.4 |