js css html前端JavaScript

JavaScript 构造函数私有、公有、静态、特权方法

2022-06-27  本文已影响0人  暴躁程序员

3. 构造函数的私有、公有、静态、特权方法

  1. 私有属性和方法
    创建:在构造函数内部创建的变量是私有属性,创建的函数是私有方法
    特点:私有方法不可在类的外部调用,且可调用共有和私有的方法或属性
function Student() {
    const name = 'Student 私有属性'
    const method1 = function () {
        return 'Student 私有方法'
    }
    function method2() {
        return 'Student 私有方法'
    }
}
  1. 公有属性和方法
    创建:在构造函数内部通过this创建的变量是公有属性,在构造函数内部或者外部创建在原型对象上的函数是公有方法
    特点:公有方法可以通过实例化的方式在类的外部调用
function Student(params) {
    this.name = 'Student 公有属性'
    Student.prototype.method1 = function () {
        console.log('Student 公有方法1');
    }
}
Student.prototype.method2 = function () {
    console.log('Student 公有方法2' + this.name);
}
console.log(new Student().name);
new Student().method1()
new Student().method2()
// 在构造函数内部创建的公有方法,所有属性和方法均可调用
// 在构造函数外部创建的公有方法,可调用共有的属性和方法,不可调用私有属性和方法
  1. 静态属性和方法
    创建:在构造函数外部通过构造函数名称创建的属性是静态属性,创建的方法是静态方法
    特点:静态方法通过构造函数名称的方式调用,且不可访问构造函数内部的所有属性和方法
function Student() {
    this.age = 18
}
Student.nameX = 'Student 静态属性'
Student.method = function () {
    console.log('Student 静态方法' + this.age); // 结果: Student 静态方法undefined
}
Student.method()
console.log(Student.nameX);// 注意:Student.name的结果是 Student,注意自定义的名称勿要起冲突
  1. 特权方法
    创建:在构造函数内部通过 this 的方式创建的方法是特权方法
    特点:与在构造函数内部创建的公有方法相同
function Student() {
    this.age = 18
    this.method = function () {
        console.log(this.age);
    }
}
new Student().method()
上一篇 下一篇

猜你喜欢

热点阅读