概述
一.原型链以及继承的使用以及优缺点
先创建一个人的类型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高级第二期所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复