ES5中的构造函数
//ES5中的构造函数
//手机
function phone(brand,price){
this.brand = brand
this.price = price
}
//添加方法
phone.prototype.call = function(){
console.log('我能打游戏');
}
//实例化对象
let h = new phone('华为',2000)
h.call()
console.log(h);
ES6class
class Phone {
constructor(brand, price) {
this.brand = brand
this.price = price
}
call(){
console.log('我可以打电话');
return 1;
}
}
let oneplus = new Phone('1+',1000)
console.log(oneplus.call());
console.log(oneplus);
class类的静态成员
class Phone{
//静态属性
static name = '手机';
static change(){
console.log('哈哈哈哈');
}
}
let nokia = new Phone()
console.log(nokia.name);
console.log(Phone.name);
ES5中构造函数继承
<script>
//手机
function Phone(brand,price){
this.brand = brand
this.price = price
}
Phone.prototype.call = function(){
console.log('我能打电话');
}
//智能手机
function SmartPhone(brand,price,color,size){
Phone.call(this,brand,price)
this.color = color
this.size = size
}
//设置子级构造函数的原型
SmartPhone.prototype = new Phone;
//声明子类的方法
SmartPhone.prototype.photo = function(){
console.log('我可以拍照');
}
SmartPhone.prototype.playGames = function(){
console.log('我可以玩游戏');
}
const chuizi = new SmartPhone('锤子','2400','黑色','6.5inch')
console.log(chuizi);
</script>
ES6中的class继承
<script>
class Phone{
//构造方法
constructor(brand,price){
this.brand = brand
this.price = price
}
call(){
console.log('我能打电话');
}
}
class SmartPhone extends Phone{
//构造方法
constructor(brand,price,color,size){
super(brand,price)
this.color = color
this.size = size
}
photo(){
console.log('拍照');
}
playGames(){
console.log('打游戏');
}
}
const xiaomi = new SmartPhone('小米',1399,'褐色','5.5inch');
console.log(xiaomi);
xiaomi.call()
xiaomi.photo()
xiaomi.playGames()
</script>
class中的get和set
<script>
class Phone{
get price(){
console.log('价格属性被读取');
return 'hahahahah'
}
set price(newvalue){
console.log('属性被修改');
}
}
//实例化对象
let s = new Phone();
console.log(s.price);
</script>