首页 > 其他 > 详细

ES6 的class类 笔记

时间:2018-05-23 11:42:54      阅读:139      评论:0      收藏:0      [点我收藏+]
class Person{  
    // 构造  
    constructor(x,y){  
        this.x = x;  
        this.y = y;  
    }  
    toString(){  
        return (this.x + "的年龄是" +this.y+"");  
    }  
}  
export {Person};  
//index.js  
import {Person} from ./Person;  
let person = new Person(张三,12);  
console.log(person.toString());</span>  

1、class初始化定义:

   Person 是一个类 ,定义了属性(x,y)与方法 toString()

console.log(typeof Person);//function  
console.log(Person === Person.prototype.constructor);//true

so: 类的数据类型就是函数,类本身就指向构造函数, 可以理解为:类就是构造函数 , 因为es5的中 【构造函数 === 构造函数.prototype.constructor】

 

2、class类的修改与增加属性方法:

构造函数的prototype属性,在ES6的“类”上面继续存在。事实上,类的所有方法都定义在类的prototype属性上面,通过以下方式可是覆盖类中的方法,当然定义类的时候也可以通过这个方式添加方法。

Object.assign(Person.prototype,{  
    getWidth(){  
        console.log(‘12‘);  
    },  
    getHeight(){  
        console.log(‘24‘);  
    }  
});  
Person.prototype.sex = ‘man‘ ;
console.log(p.sex);  // man

Person.prototype.sex = ‘woman‘ ;
console.log(p.sex);  //woman

//class拥有保护机制,可以增加,或覆盖原来有属性,但是如下就不行
Person.prototype == {}
console.log(p.sex); //‘woman‘;
//sex属性还在,prototype从新赋空值这样是不生效的

 

PS建议:class类已经定义完毕不可修改,不可直接修改Person.prototype,个别场景需要,应新建一个继承class上,然后再修改,拓展,新class继承老的class

ES6 的class类 笔记

原文:https://www.cnblogs.com/liujinyu/p/9075949.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!