class Modal {
/* 构造函数体 */
constructor (x, y) {
// 向实例对象上添加私有属性和方法
this.x = x
this.y = y
}
/* 给当前实例设置私有的属性和方法 */
z = 30
fn = function () {
console.log(this.z)
}
/*
+ 向构造函数原型对象上扩展方法
+ 不能扩展公共属性;
+ 增加的方法不能使箭头函数[因为语法只能按照下述方式写]
+ 增加的方法没有prototype属性
+ 这些方法是不可枚举的
+ 我们可以在外面, 基于 Modal.prototype.xxx 去弥补上述出现的情况
*/
getX () { // 不可枚举, 且没有prototype属性
console.log(this.x)
}
getY () {
console.log(this.y)
}
/* 设置静态私有属性和方法 */
static h = 100
static getH1 = function () { // 可遍历并具有 prototype 属性
console.log(this.h)
}
static getH2 () { // 不可遍历 且不具有 prototype 属性
console.log(this.h)
}
}
// 向构造函数上添加私有属性和方法
Modal.a = 1
Modal.getA = function () {
console.log(this.a)
}
/* 向构造函数原型对象上添加可遍历的属性和方法 */
Modal.prototype.q = 50
Modal.prototype.getQ = function () {
console.log(this.q)
}
// Modal() // Class constructor Modal cannot be invoked without 'new'; 基于class创建
// 的构造函数, 只能带 new 执行, 也就是只能基于构造函数的方式去执行, 不能当做普通函数执行
let m = new Modal(10, 20)
console.log('实例对象', m);
console.dir(Modal);
console.log('构造函数的原型对象', Modal.prototype)
class语法总结
于 2022-03-31 14:40:46 首次发布