黑马程序员技术交流社区

标题: 【广州前端首发】ES6核心课程笔记之语法篇(四) [打印本页]

作者: AreYouGlad    时间: 2017-12-19 11:17
标题: 【广州前端首发】ES6核心课程笔记之语法篇(四)
本帖最后由 AreYouGlad 于 2017-12-20 11:54 编辑

查看更多精彩前端资源


class类
语法
[JavaScript] 纯文本查看 复制代码
class Person {

        // 以前的构造函数
        constructor(name, age, gender) {
                this.name = name;
                this.age = age;
                this.gender = gender;
        };

        // 以前原型上的方法
        say() {
                console.log(`${ this.name }今年${ this.age }岁了`);
        };

};

// 使用方式一样
let xiaoming = new Person('小明', 14, '男');
xiaoming.say();

静态方法属于类自己,通过类名.方法名调用注意这里static关键字只能作用于方法,不能作用于属性
[JavaFX] 纯文本查看 复制代码
class Person {

        constructor() {
                Person.total++ ||  (Person.total = 1);
        };

        // 统计总人口,
        static getTotal() {
                return Person.total;
        };

};

let p1 = new Person;
let p2 = new Person;
console.log(Person.getTotal()); // 2
通过extends关键字实现继承如果子类有构造器,必须添加super()调用父类构造器继承后子类实例便可使用父类实例的属性与方法
[JavaScript] 纯文本查看 复制代码
class Animal {

        constructor(name, age, gender) {
                this.name = name;
                this.age = age;
                this.gender = gender;
        };

        eat() {
                console.log('都得吃啊!');
        };

};

class Person extends Animal {

        constructor(name, age, gender) {
                super(name, age, gender);
        };

        say() {
                console.log(`${ this.name }今年${ this.age }岁了`);
        };

};
let xiaoming = new Person('小明', 14, '男');
xiaoming.eat();
xiaoming.say();
[JavaScript] 纯文本查看 复制代码
class Animal {

        static test() {
                console.log('来自父类的静态方法');
        };

};
class Person extends Animal {};
Person.test();
本质
[JavaScript] 纯文本查看 复制代码
class Person {};
typeof Person; // function

[JavaScript] 纯文本查看 复制代码
class Person {
        eat() {
                console.log('吃吃吃');
        };
};
Person.prototype;
[JavaScript] 纯文本查看 复制代码
class Person {
        static getTotal() {
                console.log('70亿');
        };
};
Person;
[JavaScript] 纯文本查看 复制代码
class Animal {
        eat() {
                console.log('都得吃啊!');
        }

        static sleep() {
                console.log('睡');
        }
};

class Dog extends Animal {}

// 实现原理
Dog.prototype 继承 Animal.prototype,即子类原型 ==> 父类原型
Dog 继承 Animal,即子类 ==> 父类
模块
webpack安装导出导入具名变量演示1
[JavaScript] 纯文本查看 复制代码
export let year = 2017;
let month = 10;
let day = 28;
export function getDate() {
        return `${year}_${month}_${day}`;
}
[JavaScript] 纯文本查看 复制代码
import { year, getDate } from './a.js';
console.log(year);                 // 2017
console.log(getDate());         // 2017_10_28
演示2
[JavaScript] 纯文本查看 复制代码
let year = 2017;
let month = 10;
let day = 28;
function getDate() {
        return `${year}_${month}_${day}`;
}
export { year, month, day, getDate };
[JavaScript] 纯文本查看 复制代码
import * as a from './a.js';
console.log(a.year);                 // 2017
console.log(a.getDate());         // 2017_10_28
导出导入默认值export
[JavaScript] 纯文本查看 复制代码
const cacheData = {};
export default function(key, val) {
        if(val) {
                cacheData[key] = val;
                return cacheData;
        }else  {
                return cacheData[key];
        }
};
import
[JavaScript] 纯文本查看 复制代码
import cache from './cache.js';
cache('a', 10);
cache('a');      // 10



作者: AreYouGlad    时间: 2017-12-19 11:17





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2