ES5
function Test(props) {
const privateAttr = "私有属性";
this.age = props;
this.commonAttr = "实例化对象上的公有属性";
this.commonMeth = function () {
console.log("实例化对象上的公有方法");
};
}
Test.prototype.handle = function () {
console.log("原型对象上的公有方法");
};
Test.staticAttr = "静态属性";
Test.staticMeth = function () {
console.log("静态方法");
};
const TestExam = new Test(20);
console.dir(Test);
console.log(TestExam);
ES6
class Test {
constructor(props) {
const privateAttr = "私有属性";
this.age = props;
this.commonAttrA = "实例化对象上的公有属性A";
this.commonMethA = function () {
console.log("实例化对象上的公有方法A");
};
}
commonAttrB = "实例化对象上的公有属性B";
commonMethB = function () {
console.log("实例化对象上的公有方法B");
};
static staticAttrA = "静态属性A";
static staticMethA = function () {
consle.log("静态方法A");
};
handleA() {
console.log("原型对象上的公有方法A");
}
}
Test.staticAttrB = "静态属性B";
Test.staticMethB = function () {
consle.log("静态方法B");
};
Test.prototype.handleB = function () {
console.log("原型对象上的公有方法B");
};
const TestExam = new Test(20);
console.dir(Test)
console.log(TestExam);
注:实例化对象上的公有属性也叫作实例属性,原型对象上的公有属性也叫作原型属性。私有属性在严格意义上就是私有变量。