Comment déclarer des variables : 1. Utilisez la commande var, la syntaxe "var variable name;" 2. Utilisez la commande function; 3. Utilisez la commande cosnt, la syntaxe "const variable name;"; let commande, la syntaxe "let "Nom de la variable" ; 5. Utilisez la commande import ; 6. Utilisez la commande class.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ECMAScript version 6, ordinateur Dell G3.
ES5 n'a que deux façons de déclarer des variables : la commande var
et la commande function
. var
命令和function
命令。
ES6 除了添加let
和const
命令,还有两种声明变量的方法:import
命令和class
ES6 En plus d'ajouter les commandes let
et const
, il existe deux manières de déclarer des variables : la commande import
et la commande class.
Ainsi, ES6 dispose d'un total de 6 façons de déclarer des variables.
(1) commande varvar a ; //undefined var b = 1;
. (2) function command
function add(a) { var sum = a + 1; return sum; }
(3) cosnt
const a; //报错,必须初始化 const b = 1;
constant
(4) let commandlet a; //undefined
let b = 1;
function add(b) {
let sum = b + 1;
return sum;
}
let c = add(b);
(5) commande d'importation 1. introduit son propre système de modules. Exporter par l'exportation et importer par l'importation.
2. Différent de CommonJS, il obtient la référence du module, et la valeur n'est réellement obtenue que lorsqu'elle est utilisée.
3. Par exemple, en js :
let student = [ { name: 'xiaoming', age: 21, }, { name: 'xiaohong', age: 18 } ] export default student; // 这种导出方式,你可以在import时指定它的名称。
4. Dans app.js, on peut l'utiliser comme ceci :
import StudentList from './student.js'; //指定名称 console.log(StudentList[0].name); //xiaoming
(6) class command1 : la classe sert de sucre de syntaxe pour es6. , en fait es5 Cela peut également être réalisé.
class Point { constructor (x, y) { this.x = x; this.y = y; } toString () { return this.x + ',' + this.y; } }
//上面是一个类 Object.assign(Point.prototype, { getX () { return this.x; }, getY () { return this.y; } }) let p1 = new Point(1,2); console.log(p1.toString()); //1,2 console.log(p1.getX()); //1 console.log(p1.getY()); //2 console.log(Object.keys(Point.prototype)); // ["getX", "getY"]
constructor默认返回实例对象(this),完全可以指定返回其他的对象。
必须用new调用
不存在变量提升
当用一个变量去接受class时,可以省略classname
es6不提供私有方法。
2:使用extends继承
class ThreeDPoint extends Point { constructor (x, y, z) { console.log(new.target); //ThreeDPoint super(x, y); this.z = z; } toString () { return super.toString() + ',' + this.z; } static getInfo() { console.log('static method'); } get z() { return 4; } set z(value) { console.log(value); } } ThreeDPoint.getInfo(); // "static method" let ta = new ThreeDPoint(2,3,4); console.log(ta.toString()); //2,3,4 console.log(ta.z); // 4 ta.z = 200; // 200 console.log(Object.getPrototypeOf(ThreeDPoint)); //Point
constructor中必须调用super,因为子类中没有this,必须从父类中继承。
子类的__proto__属性总是指向父类
子类的prototype属性的__proto__总是指向父类的prototype
Object.getPrototypeOf()获取父类
super作为方法只能在constructor中
super作为属性指向父类的prototype.
在constructor中使用super.x = 2,实际上this.x = 2;但是读取super.x时,又变成了父类.prototype.x。
原生构造函数是无法继承的。
get set 方法可以对属性的赋值和读取进行拦截
(静态方法不能被实例继承。通过static声明
静态属性只能 ThreeDPoint.name = “123” 声明 (与static没什么关系)
【推荐学习:javascript高级教程】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!