我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

2022-11-26 王嘉乐

[复制链接]
yousay! 发表于 2022-11-27 23:48:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、今日所学内容
谈谈对深浅拷贝的理解 ?
  • 基本类型:number string undefined null boolean symbol bigInt
  • 引用类型:object(object function array)


  • 基本类型:栈
  • 引用类型:堆,栈中存放它的地址(在堆中的地址),指向堆中的数据

变量的复制   
  • 基本类型:传递的是值的拷贝
  • 引用类型:传递地址的拷贝

参数的传递  
  • 基本类型:传递的是值的拷贝
  • 引用类型:传递地址的拷贝

ES5继承:寄生组合式继承   



答: 深浅拷贝都解决了引用类型 数据共享的问题  (如果是引用类型,
两个对象就会共享一份数据,只要修改其中一个对象,就会对另外一个对象造成影响)
但是解决程度不一样  :   浅拷贝  只拷贝一层   深拷贝 --每一层都拷贝



数据类型检测的几种方式以及各自优缺点?
优点:基本的都是能辨识   缺点:有几个辨识一样    如下:
01-  typeof:主要用于检测基本类型     
        console.log(typeof null);     //object
        console.log(typeof {});        //object
!!console.log(typeof []);      ---   //object
!  !     console.log(typeof function () { });   //function


02-instanceof:
语法:
        变量(实例对象) instanceof 构造函数
        变量的原型链上找得到后面的构造函数  就会返回true 否则返回false
优点:[]  判断为true了    缺点  一堆true  没得辨识   
如下:
!!  console.log([] instanceof Array);  //true
        console.log(function () { } instanceof Function);  //true
        console.log(function () { } instanceof Object);  //true
        console.log(10 instanceof Object);                   //false
        console.log(new Number(10) instanceof Object);    //true
03-     Object.prototype.toString()
//.call()用来改变this指向
console.log(Object.prototype.toString);    // ƒ toString() { [native code] }
console.log(Object.prototype.toString());     // [object Object]
var arr = [];
console.log(Object.prototype.toString.call(arr));    [object Array]
console.log(Object.prototype.toString.call(null));  
   精准辨识  但是需要改变this指向   

回复

使用道具 举报

关注0

粉丝0

帖子46

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026