js 继承

类的继承。类有三种属性:公有属性(prototype)私有属性 静态方法(静态属性)
在es5中没有类的概念的,通过构造函数来实现类

es5如何实现一个类

  1. 继承私有属性
function Child(){
this.age=9;
Parent.call(this);
}
let child=new Child();

2.继承公有属性
先找私有属性,找不到了找公有属性

function Parent(){
//构造函数中的this 通过new调用的那么this指代的是实例
this.name='parent'
}
Parent.prototype.eat=function(){
console.log('eat')
}
1).Child.prototype._proto_=Parent.prototype;
2).Object.setPrototypeOf(Child.prototype,Parent.prototype)
3).Child.prototype._proto_=Object.create(Parent.prototype,{constructor:{value:Child}});
function create(parentPrototype,props){
 function Fn(){
 Fn.prototype=parentPrototype;
 for(let key in props){
 let fn=new Fn()
 Object.defineProperty(fn,key,{...props[key],enumber:true})}
 return fn;
}
}

在这里插入图片描述

Object.defineProperty(a,'name',{
enumerable:true,//表示这个属性是否可以被枚举出来
configurable:true,//表示这个属性是否可以被删除
get(){
return 1
},
set(val){

}
})

3、继承私有属性和公有属性

Child.prototype =new Parent()

es6如何实现一个类

class Parent{
constructor(){
this.name=p//私有属性
}
static b(){//属于类上的方法
return 2;}
eat(){//原型上的方法
console.log('eat')
}
}
class Child{
constructor(){
this.age=9//私有属性
}
static a(){//属于类上的方法
return 1;}
smoking(){//原型上的方法
console.log('smoking')
}
}
let child =new Child()//继承私有和公有属性
//继承私有方法
class Child extends Parent{
constructor(){
super()
}
static c(){}
}
  1.  类只能new
    
  2. 类可以继承私有、共有、静态方法
  3. 父类的构造函数中返回了一个引用类型会把这个引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值