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.作用域问题  

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《JavaScript高级程序设计》(第三版)是一本经典的JavaScript技术书籍。此书由Nicholas C. Zakas撰写,涵盖了广泛的主题,适合有一定JavaScript基础的读者。本书详细介绍了JavaScript语言的各个方面,包括基本语法、DOM操作、BOM操作、事件处理、Ajax、浏览器兼容性问题等。 这本书的优点之一是作者对JavaScript的深刻理解和独特的教学方法。他将复杂的概念和技术变得简单易懂,通过实际的例子和案例来解释和演示。读者可以通过跟随书中的练习和项目,逐渐提升自己的JavaScript编程能力。 此外,本书还包含了一些高级主题,如函数、闭包、面向对象编程等。这些主题对于想要深入理解JavaScript的读者来说十分有价值。此外,作者还介绍了一些最佳实践和优化技巧,帮助读者编写更高效、可维护的JavaScript代码。 《JavaScript高级程序设计》(第三版)最大的优点之一是其综合性。它涵盖了JavaScript的各个方面,并且通过详细的目录、索引和附录,方便读者在需要时进行查找和参考。此外,书中还有大量的实例代码和详细的解释,使得读者能够更好地理解和应用所学的知识。 总结来说,《JavaScript高级程序设计》(第三版)是一本非常全面、详尽的JavaScript技术书籍。它不仅适合有一定基础的读者,也适合那些想要深入了解JavaScript编程的人。无论是作为学习教材还是作为参考书,这本书都是非常有价值的。阅读本书将有助于读者提升自己的JavaScript编程能力,并掌握一些高级技术和最佳实践。 ### 回答2: 《JavaScript高级程序设计(第三版)》是一本经典的JavaScript编程指南,由著JavaScript专家尼古拉斯·泽卡斯(Nicholas C. Zakas)撰写。该书自2009年首次出版以来,一直被广泛用作学习JavaScript的参考书籍。 这本书从基础知识讲起,逐渐引导读者深入了解JavaScript的各个方面。作者详细介绍了JavaScript的语法、数据类型、运算符、函数、对象、数组等核心概念,并通过大量的实例和案例进行讲解,帮助读者理解和应用这些知识。 《JavaScript高级程序设计(第三版)》特别关注JavaScript高级特性和最佳实践。作者深入浅出地讲解了闭包、原型链、作用域链等概念,并详细探讨了JavaScript的错误处理、异步编程和模块化等重要主题。读者通过学习这些内容,可以编写出更加高效、可维护和可扩展的JavaScript代码。 此外,书中还介绍了如何在浏览器环境和服务器环境中使用JavaScript,包括DOM操作、事件处理、Ajax、Web存储等技术。作者还对跨浏览器兼容性进行了讨论,帮助读者解决在不同浏览器中遇到的兼容性问题。 总之,《JavaScript高级程序设计(第三版)》是一本非常全面和权威的JavaScript学习资料。它适合初学者学习JavaScript的基础知识,也适合有一定经验的开发者深入了解和掌握JavaScript高级特性。无论是前端开发还是后端开发,读者都能从中获得宝贵的经验和知识。 ### 回答3: 《JavaScript高级程序设计》(第三版)是一本经典的JavaScript编程教材。该书由Nicholas C. Zakas撰写,对JavaScript的核心概念和高级技术进行了深入讲解。 该书主要分为三个部分。第一部分介绍了JavaScript语言的基础知识,包括语法、数据类型、流程控制、函数等内容。这一部分的目的是帮助读者建立对JavaScript基础的扎实理解,为后续的高级概念打下基础。 第二部分是该书的核心内容,讨论了JavaScript的面向对象编程和浏览器环境中的DOM操作。读者将学习使用构造函数、原型和继承等概念来开发复杂的JavaScript应用程序。此外,本书还给出了大量的示例代码和实践项目,帮助读者提升编程实战能力。 第三部分则涵盖了一些高级主题,如错误处理、数据存储、正则表达式、Ajax等。这些议题是现代Web开发中非常重要的部分,对于提升网页交互性和用户体验至关重要。 《JavaScript高级程序设计》(第三版)在内容上更为详尽全面,适合具备一定JavaScript基础的读者学习。此外,该书侧重于实践应用,深入浅出地讲解了一些复杂的概念,并通过实例和项目帮助读者学以致用。 总的来说,该书通过系统性的介绍和练习,帮助读者逐步掌握JavaScript的核心概念和高级技术,为他们成为出色的JavaScript开发者奠定坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值