菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育
标题:
康利20221126JS高级04
[打印本页]
作者:
智商不在服务区
时间:
2022-11-27 19:42
标题:
康利20221126JS高级04
一、学习内容:
数据类型的分类
基本类型
ES5
number,string,undefined,null,Boolean
ES6
number,string,undefined,null,Boolean,smybol,bigInt
引用类型
ES5
object
ES6
object,array,function
数据类型的内存分配
基本类型
保存在栈中
引用类型
保存在堆中,在栈中存放它的地址(在堆中的地址),指向堆中的数据
变量的复制
1. 基本类型:传递的是值的拷贝
2. 引用类型:传递地址的拷贝
参数的传递
1. 基本类型:传递的是值的拷贝
2. 引用类型:传递地址的拷贝
深浅拷贝
为什么要拷贝:如果是引用类型,两个对象就会共享一份数据,只要修改其中的一个对象,就会对另外一个对象造成影响
浅拷贝
只拷贝一层
实现方法一:for...in
const obj1 = {};
for (let key in obj) {
obj1[key] = obj[key];
}
实现方法二:Object.assign();
const obj1 = Object.assign({}, obj);
深拷贝
每一层都拷贝
都是固定语法
<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
const obj1 = JSON.parse(JSON.stringify(obj));
完美拷贝
const obj1 = _.cloneDeep(obj);
变量的类型检测
1. typeOf---一般用来检测基本类型
console.log(typeof 'abc'); // string
console.log(typeof true); // boolean
console.log(typeof 1233); // number
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof Symbol()); // symbol
console.log(typeof {}); // object
console.log(typeof []); // object
console.log(typeof function () { }); // function
2. instanceof---主要用于检测引用类型
语法:变量(实例对象) instanceof 构造函数
变量的原型链上找得到后面的构造函数 就会返回true 否则返回false
console.log([] instanceof Object);
console.log({} instanceof Object);
console.log(new Date() instanceof Object);
console.log(function () { } instanceof Object);
console.log(10 instanceof Object); // false
console.log(new Number(10) instanceof Object);
3. Object.prototype.toString();
console.log(Object.prototype.toString.call(arr));
console.log(Object.prototype.toString.call({}));
console.log(Object.prototype.toString.call(function () { }));
console.log(Object.prototype.toString.call('123'));
console.log(Object.prototype.toString.call(123));
console.log(Object.prototype.toString.call(true));
console.log(Object.prototype.toString.call(undefined));
console.log(Object.prototype.toString.call(null));
console.log(Object.prototype.toString.call(Symbol()));
继承
ES5继承:寄生组合式继承
// 父类 人类
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
// 原型方法---共享方法
Person.prototype.eat = function () {
return '干饭';
}
Person.prototype.way = function () {
return '走路';
// 静态方法:只能构造函数自己调用,实例对象不可以调用
Person.say = function () {
return '说话';
}
// 子类 程序员类
function Programmer(name, age, sex, skill) {
// 1.调用父类构造函数的属性
Person.call(this, name, age, sex);
this.skill = skill;
}
// 2.调用父类所有的原型方法
Programmer.prototype = Object.create(Person.prototype);
// 3.找回子类原型丢失的构造函数
Programmer.prototype.constructor = Programmer;
// 子类构造函数的原型方法
Programmer.prototype.code = function () {
return '一天一万行';
}
Programmer.say = Person.say;
// 创建子类的实例对象
const p = new Programmer('kl', 23, '2', '99999');
console.log('程序员子类的实例对象', p);
欢迎光临 菁英数字科技(猩码)-猩码学苑-专注软件开发人才菁英教育 (http://www.xingmaxueyuan.com/)
Powered by Discuz! X3.4