JavaScript 继承和原型

本文讲解了ES6模板字符串的简洁用法,并深入剖析了JavaScript的原型继承与构造函数继承技巧。同时介绍了如何改变`this`指向,以及浅拷贝与深拷贝的区别,适合前端开发者学习JavaScript进阶知识。
摘要由CSDN通过智能技术生成

es6小语法

模板字符串
	`  在这里可以写内容  ${变量名}`  
	模板字符串简化了字符串拼接,是js字符串拼接不在使用 + 符号连接
JavaScript继承
	1.原型继承
		不做过多解释直接上代码
    // let fu =function(name){
    //     this.name =name
    // }
    // fu.prototype.say=function(){
    //     alert("你好")
    // }
    // let zi =function(like){
    //     this.like =like 
    // }
    // zi.prototype=new fu("张三丰");
    // let obj=new zi("吃人肉");
    // console.log(obj)
    // obj.say()  
    
	2.构造函数继承
	 // let fu=function(name){
    //     this.name=name
    // }
    // let zi = function(like){
    //     fu.call(this,"黄老斜")
    //     this.like=like
    // }
    // let a = new zi("脑瓜歪了");
    // console.log(a)
JavaScript改变this指向
	     // 1.apply 传参的时候使用数组进行传参,
      // 2.bind 传参的时候在括号外面在写一个括号,在里面传参   
       fn.bind  (obj)  (在这里写要传递的参数)
拷贝
浅拷贝
	    let arr = [1, 2, 3, { name: "张飞" }];
    // 浅拷贝-----在改变表层数据时不会影响 newArr 但是在改变深层数据 
    {name :"张飞"} 时, newArr 会随之发生改变
    // let newArr = [...arr];
    // arr[0] = '表层改变';
    // arr[3].name = "关羽";
    // console.log(newArr, arr)

    // 深拷贝------在拷贝之后改变 arr 之后,newArray 不在受其影响
    // let newArray = JSON.parse(JSON.stringify(arr))
    // arr[0] = '表层改变';
    // arr[3].name = "关羽";
    // console.log(arr, newArray)
深拷贝
	    let arr = [1, 2, 3, { name: "张飞" }];
   Object.prototype.clone = function () {
       // 判断调用clone()方法的调用者,如果是对象创建新对象,如果是数组  
       创建新数组 
       var o = this.constructor == Array ? [] : {}
       // 循环 向数组或对象中添加数据
       for (var i in this) {
           // 判断添加的属性类型如果是 对象 就再次调用 clone() 方法 ,
           否则就赋值
           // o[i] = typeof this[i] == 'Object' ? this[i].clone()   
           : this[i]
           if (typeof this[i] == "Object") {
               o.push(this[i].clone())
           } else {
               o.push(this[i])
           }
       }
       // 最后返回新的数组或对象
       return o
   }
   let newArr = arr.clone()
   console.log(newArr)
   // console.log(Object.prototype
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值