Open HuangHongRui opened 7 years ago
类 与 自定义类型 之间的差异.
将PersonClass声明编写等价Code
let PersonClass = ( function() {
"use strict"
const PersonClass2 = function( name ) {
if ( typeof new.target === "undefined" ) {
throw new Error (' 必须关键字new调用 ')
}
this.name = name
}
Object.defineProperty( PersonClass2.prototype, "sayname", {
value: function() {
if ( typeof new.target !== "undefined" ) {
throw new Error (" 不可通过new调用方法 ")
}
console.log( this.name )
}
enumerable: false,
writable: true,
configurable: true
})
return PersonClass2
}())
类声明 是ES6中最简单的类形式.
声明一个类, 首先需要编写 class关键字, 紧跟着是 类的名字
私有属性是实例中的属性, 不会出现在原型上, 而且只能在类的构造函数或方法中创建. [上面的代码, name就是一个私有属性] 建议: 在构造函数中创建所有私有属性.从而只通过一处就可以控制类中的所以私有属性.
console.log(typeof PersonClass)
返回的是function
所以PersonClass
声明实际上是创建一个具有构造函数方法行为的函数.sayname()
是PersonClass.prototype
上的一个方法.与函数不同, 类属性不可被赋予新值,
PersonClass.prototype
则是这样一个只可读的类属性.