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

yizhihongxing

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系列(13):This? Yes,this!

    “深入浅析JavaScript系列(13):This? Yes,this!”是一篇关于JavaScript中this关键字的详细讲解的文章。在文章中,我们可以了解到this的实际含义,常见的用法以及使用场景。 什么是this this是一个关键字,用于引用当前上下文中的对象。具体上下文是由函数的执行方式所决定的。可以在函数内部使用this来引用当前对象。th…

    JavaScript 2023年5月18日
    00
  • 理解Javascript_07_理解instanceof实现原理

    理解Javascript_07_理解instanceof实现原理 在Javascript中,我们可以使用instanceof操作符来判断一个对象是否属于某个类或者构造函数的实例。这是一个非常常见的操作,经常用于判断一个对象的类型。在本篇攻略中,我们将深入探讨instanceof的实现原理,以及如何使用它来判断一个对象的类型。 instanceof的作用 in…

    JavaScript 2023年5月28日
    00
  • 页面定时刷新(1秒刷新一次)

    要实现页面定时刷新,我们可以使用JavaScript里的定时器(setInterval)函数来定时刷新页面。该函数能够按照一定的时间间隔定期调用指定的函数或代码。以下是实现页面定时刷新的完整攻略: 第一步:编写一个刷新页面的函数 我们需要编写一个JavaScript函数来刷新页面。该函数将会在定时器周期性调用。这个函数可以通过 location.reload…

    JavaScript 2023年6月11日
    00
  • 为什么要使用 Rust 语言、Rust 语言有什么优势

    为什么要使用 Rust 语言、Rust 语言有什么优势 1. 什么是 Rust 语言? Rust 是一种多范式系统编程语言,旨在提供可靠的内存安全和高性能 abstractions 的开发体验。特别是,它解决了传统 C 和 C++ 语言中的一些缺陷,如空指针、缓冲区溢出等,同时通过所有权机制解决了内存安全问题。Rust 是 Mozilla Foundatio…

    JavaScript 2023年5月28日
    00
  • 详解原生JS动态添加和删除类

    下面就详细讲解一下“详解原生JS动态添加和删除类”的完整攻略。 概述 在前端开发中,动态改变元素的样式是十分常见的需求,其中动态添加类名和动态删除类名就是两种常见的实现方式。通过动态改变元素的类名,可以轻松实现样式的交互效果和动画效果。 动态添加类名 方法一:使用Element.classList方法 Element.classList是DOM API提供的…

    JavaScript 2023年6月10日
    00
  • javascript删除一个html元素节点的方法

    要删除一个HTML元素节点,可以使用JavaScript中的removeChild方法。下面是使用removeChild方法删除HTML元素节点的完整攻略: 步骤一:获取要删除的HTML元素节点 在上述步骤的示例代码中,我们想要删除一个 元素节点。因此,我们需要使用JavaScript的document.getElementById()或document.q…

    JavaScript 2023年6月10日
    00
  • jQuery使用cookie与json简单实现购物车功能

    下面是详细讲解“jQuery使用cookie与json简单实现购物车功能”的完整攻略: 简介 购物车是电商网站必不可少的功能,通过购物车,用户可以将自己关心的商品加入到购物车中,然后在统一的界面进行管理、筛选、结算等操作。本攻略将讲解如何使用 jQuery、JSON、Cookie 等技术实现购物车功能。 步骤讲解 步骤1:购物车结构设计 首先,我们需要考虑购…

    JavaScript 2023年5月27日
    00
  • JS遍历Json字符串中键值对先转成JSON对象再遍历

    要在JavaScript中遍历JSON字符串中的键值对,首先需要将JSON字符串转换为JavaScript对象。以下是实现此任务的完整步骤: 使用 JSON.parse() 将JSON字符串转成JSON对象。JSON.parse() 使用两个参数:要解析的JSON字符串和一个可选的“reviver”函数,用于调整解析生成的结果。如果只想将JSON字符串转换成…

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