我是靠谱客的博主 懦弱金鱼,最近开发中收集的这篇文章主要介绍js高级第二期,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.原型链以及继承的使用以及优缺点

先创建一个人的类型people:

 function people(name,age,work){

        }

再创建一个教师类teacher:

 function teacher(name,age,work){
            this.name = name;
            this.age = age;
            this.work = work;
            this.like = function(){
                console.log("这个"+this.work+"叫"+this.name+",年龄: "+this.age)
            }
        }

让people类继承teacher类

 people.prototype = new teacher("王二",22,"教师");//使用原型继承教师类
         //不传参数
         var people1 = new people();
         people1.like();//结果为这个教师叫王二,年龄: 22
         //传入参数
         var people2 = new people("李四",25,"教师");
         people2.like();//结果这个教师叫王二,年龄: 22

传入参数和不传入参数结果是一样的,原型链的缺点就是在原型中对父级的属性进行了统一的赋值无法初始化对应的属性

再新建一个学生的类并使用冒充继承

 function Student(name,age,work){
             teacher.call(this,name,age,work);//冒泡继承
         }
         teacher.prototype.teac=function(){//给teacher的原型添加方法
             console.log(1)
         }
         var Student1 = new Student();
         //Student1.teac();//创建并调用报错
         people1.teac();//可以调用结果为1

冒充继承可以进行修改属性但是却无法继承其原型上的东西,所以可以使用混合模式进行继承,内部使用冒充继承,外部使用原型继承

2.call()和apply()方法的使用

function Student(name){
            this.name=name
            this.showName=function(){
                console.log(this.name)
            }
            this.count=function(a,b,c,d){
                console.log(this.name+"总计"+a+b+c+d)
            }
        }
        var s1=new Student("王一")
        var s2=new Student("张三")
        s1.count.call(s2,1,2,3,4)//张三总计1234

通过call修改了this的指向,本来应该是s1所传的王一,修改为了张三

//.apply(对象,[]) 改变this的指向性 
        // var arr=[8,9,6,3]
        // s1.abc.apply(s1,arr)
        // Math.max() 求一组数的最大值
        var arr=[50,58,69,35,46]
        var result1=Math.max.apply(null,arr)
        var result2=Math.min.apply(null,arr)
        console.log(result1)//69
        console.log(result2)//35

通过apply可以修改this的指向以及简单巧妙应用传入的参数是数组可以减少写代码的量

3.面向对象 set get 作用以及目的以及如何实现私有属性 

个人理解是get是通过返回值返回给外部数据使外部可以从内部进行取出数据,set是只写属性,私有属性是在内部使用var定义,只能内部使用,外部无法访问使用

4.作用域问题  

就和上面说的私有属性类似,私有属性个人认为相当于局部作用域,只有内部的人员认识,而定义在全局的是作用在全局,就是都认识它并使用。

最后

以上就是懦弱金鱼为你收集整理的js高级第二期的全部内容,希望文章能够帮你解决js高级第二期所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部