面向对象

面向对象的特征
(1)封装:把有共同特点的属性和方法放在一起叫做封装,一个类就是一个封装
(2)继承:子类可以继承父类的方法和属性,无须重新定义
(3)多态:事务的多种表现形态,叫做多态,用重写和重载来实现
重写:在子类和父类中,有相同的方法名,执行不同的操作,叫做重写
重载:在一个文件中,有相同的方法名,参数的个数或类型不同,执行不同的操作
注意:js里没有重载

继承
prototype原型链
每个对象下都会存在一个原型链的关键字,原型链的原理是,让一个引用类型继承另一个引用类型下的属性和方法。每一个构造函数里都有一个原型对象,原型对象都包含一个指向构造函数的指针,二实例都包含一个指向原型的内部指针
例如:
function Father(){//父类
this.name=“zhangsan”
}
function Son(){//孩子
this.name=“zhangyi”
this.age=23
}
Son.prototype=new Father();//继承
var s=new Son()
document.writeln(s.name)//输出父类的变量值

重写:
必须是父类与子类的关系

function Father(){//父类
this.name=“zhangsan”
}
function Son(){//孩子
this.name=“zhangyi”
this.age=23
this.fun=function(){
document.writln(“ddd”)
}
Father.prototype.fun=function(){//父类函数
document.writln(“ddaaaad”)
}
Son.prototype=new Father();//继承
var s=new Son()
s.fun()//儿子的函数

借用父类构造器
call和apply
用来重新定义当前对象编程另一个对象,所有把福利信息显示成孩子信息
call(对象,变量1,变量2,变量3…)
apply(对象,arguments)
例如:
function Father(){//父类
this.name=name
}
function Son(){//孩子
this.age=23
Father.call(this,“张晓明”)
}
Son.prototype.=new Father(){//父类构造器
var s=new Son()
document.writeln(“ddaaaad”)
}

proto,prototype,constructor的解释
proto:在不同浏览器下也会显示[[prototype]]的名字,定义在对象里的,是对象独有,在此关键字里指向的是原型。或者叫做父类对象,查找原理是,当一个变量在本身对象里没有,就会到父类对象下查找父类里没有就会去找爷爷对象,以此类推直到找到顶端null对象,还没找到则返回undefined
prototype:定义在函数里的,是构造函数独有,在此关键字里指向的是实例化的对象,通过函数找对象,并且找到对象下的所有公有的属性和方法
s.proto==Son.prototype;//true
constructor:定义在对象里的,对象独有,此关键字指向的是原型的构造函数,也就是说,是通过对象找函数,找的是构造函数,
查找原理:在孩子里去找父类构造函数,以此类推,直到找到function,因为定义的不管是函数还是构造器,都属于function类型,都会存在function对象下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值