js面向对象之公有、私有、静态属性和方法详解

JS面向对象之公有、私有、静态属性和方法详解

面向对象编程思想是现代编程语言的重要组成部分,在JS中同样也支持面向对象编程。在面向对象编程中,属性和方法可以被分为公有、私有、静态属性和静态方法四种类型。在本篇攻略中,我们将会详细讲解这四种类型的属性和方法。

公有属性和方法

公有属性和方法指的是可以被实例对象和类对象访问的属性和方法。在JS中可以使用this关键字将属性和方法设置为公有属性和方法。具体示例如下:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log("Hello, I am " + this.name + ", " + this.age + " years old.");
  }
}

let person1 = new Person("Tom", 20);
person1.sayHello();  // 输出:"Hello, I am Tom, 20 years old."

在上述示例中,name和age实例属性被设置为公有属性,sayHello方法被设置为公有方法。我们通过实例对象person1访问了sayHello方法,并成功输出。

私有属性和方法

私有属性和方法指的是只能在类内部被访问的属性和方法。在JS中,我们可以使用闭包的形式将属性和方法设置为私有属性和方法。具体示例如下:

class Person {
  constructor(name, age) {
    this.getName = function() {
      return name;
    }

    this.getAge = function() {
      return age;
    }
  }

  sayHello() {
    console.log("Hello, I am " + this.getName() + ", " + this.getAge() + " years old.");
  }
}

let person1 = new Person("Tom", 20);
person1.sayHello();  // 输出:"Hello, I am Tom, 20 years old."
console.log(person1.getName());  // 报错:person1.getName is not a function

在上述示例中,getName和getAge属性被设置为私有属性,因此我们无法通过实例对象person1访问这两个属性。我们通过sayHello方法访问了这两个属性,并成功输出。

静态属性和方法

静态属性和方法指的是属于类对象而不属于实例对象的属性和方法。在JS中,我们可以使用static关键字将属性和方法设置为静态属性和方法。具体示例如下:

class Person {
  static type = "human";

  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  static sayType() {
    console.log("This is a " + this.type + ".");
  }
}

let person1 = new Person("Tom", 20);
Person.sayType();  // 输出:"This is a human."
console.log(person1.type);  // 输出:undefined

在上述示例中,type属性被设置为静态属性,sayType方法被设置为静态方法。我们通过类对象Person访问了sayType方法,并成功输出。

示范示例

下面我们来看一个完整的示范示例,这个示例展示了对象属性和方法的混合使用:

class Animal {
  static type = "animal";

  constructor(name) {
    let _name = name;  // 私有属性

    this.getName = function() {  // 特权方法
      return _name;
    }

    Animal.sayType();
  }

  sayHello() {  // 公有方法
    console.log("Hello, I am " + this.getName() + ".");
  }

  static sayType() {  // 静态方法
    console.log("This is a " + this.type + ".");
  }
}

let animal1 = new Animal("Dog");
animal1.sayHello();  // 输出:"Hello, I am Dog."
console.log(animal1._name);  // 输出:undefined
Animal.sayType();  // 输出:"This is a animal."

在上述示例中,我们同时使用了公有、私有、特权和静态属性和方法。同时,我们也展示了私有属性和方法的定义方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js面向对象之公有、私有、静态属性和方法详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript实现选项卡功能(面向过程与面向对象)

    JavasScript实现选项卡功能有两种常用的方法,一种是面向过程的方式,另一种是面向对象的方式。下面我将详细讲解这两种方法的实现步骤和代码示例: 面向过程的实现方式 实现步骤 获取选项卡的容器和对应选项卡所显示内容的容器 遍历选项卡容器中的选项卡,为每个选项卡绑定点击事件处理函数 在点击事件处理函数中,移除容器中的所有选项卡选中状态,并将当前点击的选项卡…

    JavaScript 2023年6月10日
    00
  • 一种新的javascript对象创建方式Object.create()

    一种新的javascript对象创建方式Object.create() Object.create()是一个比较新的JavaScript方法,它可以创建一个新对象,并将原型设置为一个已有的对象。这意味着你可以使用一个现有对象作为新对象的原型,在新对象里共享原型的属性和方法。使用Object.create()的主要优点包括: 简化代码 更简单的原型继承 字面量…

    JavaScript 2023年5月27日
    00
  • js中值类型和引用类型的区别介绍

    js中值类型和引用类型的区别介绍 在JavaScript中,变量分为值类型和引用类型。值类型主要包括基本类型数据,比如数字、字符串、布尔值等,引用类型主要包括对象、数组、函数等。两者在定义、赋值和传递参数等方面有着不同的表现。 值类型 定义 值类型的变量在定义的时候,会直接将数据储存在栈内存中。 let a = 1 赋值 当把一个值类型的变量复制到另一个变量…

    JavaScript 2023年6月10日
    00
  • JS组件Bootstrap Table表格行拖拽效果实现代码

    Bootstrap Table是一个基于Bootstrap框架的网页表格插件,它提供了丰富的功能和灵活性,适合用于展示和处理大量数据。在Bootstrap Table中,通过行拖拽可以实现多个行的交换和排序,能够提供更方便快捷的用户体验。下面是实现Bootstrap Table表格行拖拽效果的完整攻略。 1. 安装Bootstrap Table和相关插件 首…

    JavaScript 2023年5月19日
    00
  • js创建元素(节点)示例

    下面是关于JS创建元素(节点)示例的完整攻略。 1. 获取元素的父元素 在JS创建元素之前,首先要获取其父元素,即要将新创建的元素添加到哪个元素中。可以通过getElementById()方法获取父元素的引用。比如: let parent = document.getElementById(‘parent’); 其中,parent为获取到的父元素。 2. 创…

    JavaScript 2023年6月10日
    00
  • javascript请求servlet实现ajax示例(分享)

    下面我来详细讲解“javascript请求servlet实现ajax示例(分享)”的完整攻略。 什么是 Ajax? Ajax 指的是一种创建交互式、快速动态网页的技术。利用 Ajax,在不重新加载整个页面的情况下,实现局部更新数据的功能,并且不会打断用户正在进行的操作。 实现 Ajax 的方式 实现 Ajax 的方式有很多,其中比较典型的方式就是使用 Jav…

    JavaScript 2023年6月11日
    00
  • 使用HTML5原生对话框元素并轻松创建模态框组件

    下面是使用HTML5原生对话框元素并轻松创建模态框组件的完整攻略。 概述 HTML5引入了一个新的对话框元素<dialog>,可以用来创建模态框对话框。模态框对话框可以在用户操作未完成时阻止其他交互,并向用户提供可选择的选项。在本攻略中,我们将通过一个实例和代码示例的方式来讲解如何使用这个元素来创建模态框组件。 步骤 步骤一:创建一个模态框组件 …

    JavaScript 2023年6月11日
    00
  • javascript巧用eval函数组装表单输入项为json对象的方法

    下面是详细讲解“javascript巧用eval函数组装表单输入项为json对象的方法”的完整攻略。 简介 在 Web 开发中,我们常常需要将用户在表单中输入的数据组装成 JSON 格式发送给后台进行处理。在传统的方法中,我们需要对每个表单元素逐一获取 value 值并组装成一个 JSON 对象,这种方式虽然可行,但显然效率较低。本文介绍一种巧用 eval …

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部