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日

相关文章

  • 兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现

    要实现检测页面装载完毕的功能,可以使用Ext.onReady函数。该函数是ExtJS框架提供的,用于在页面元素完全加载之后执行给定的函数。 具体步骤如下: 引入ExtJS的库文件。在HTML页面的标签中加入以下代码: <script type="text/javascript" src="path/to/extjs/ext…

    JavaScript 2023年6月10日
    00
  • javascript中onmouse事件在div中失效问题的解决方法

    针对”javascript中onmouse事件在div中失效问题的解决方法”这个问题,我会提供以下完整攻略: 问题背景 在开发当中,有时候需要在div中使用onmouse事件,但是当事件无法正常触发时,很有可能是这个问题。这可能是由于div元素中默认没有激活onmouse事件,或者div元素中使用了absolute或者fixed进行定位等原因导致。下面我们来…

    JavaScript 2023年6月11日
    00
  • javascript写一个ajax自动拦截并下载数据代码实例

    这里给出一个完整的“javascript写一个ajax自动拦截并下载数据”的攻略。 1. 理解AJAX AJAX全称为Asynchronous Javascript And XML,即异步JavaScript和XML,是一种在Web页面中实现异步数据交互的技术。使用AJAX可以在不刷新整个页面的情况下,通过后台异步加载数据,实现局部数据的更新。 2. 如何实…

    JavaScript 2023年6月10日
    00
  • Javascript Event事件中IE与标准DOM的比较

    Javascript Event事件是JavaScript中极为重要的概念,可以用于用户交互、DOM操作等各种场景中。与此相关的是,不同浏览器对于Event对象的处理存在差异,这个问题会对我们在实际开发中遇到事件处理方面的问题带来不便。本篇攻略将为大家讲述JavaScript Event事件中IE与标准DOM的比较,并提供两条示例说明。 标准DOM 在标准D…

    JavaScript 2023年6月10日
    00
  • JavaScript之浏览器对象_动力节点Java学院整理

    JavaScript之浏览器对象_动力节点Java学院整理 本文旨在详细讲解JavaScript中浏览器对象的使用,并提供相关的示例说明。 一、什么是浏览器对象 浏览器对象是指在JavaScript代码中可以直接调用的一些内置对象,它们包含了浏览器窗口、浏览器标签页、浏览器历史、浏览器地址栏、浏览器中的图片、表单等元素信息等等。浏览器对象可以通过JavaSc…

    JavaScript 2023年5月18日
    00
  • Ajax入门学习教程(一)

    这里是Ajax入门学习教程(一)的详细攻略: 一、什么是Ajax Ajax(Asynchronous JavaScript and XML)指的是一种在Web应用中创建交互式的、快速动态的用户体验的技术。通过Ajax,你可以使用JavaScript向服务器异步发出请求,获取数据,然后将这些数据呈现在页面上。 二、Ajax实现步骤 实现Ajax主要有以下步骤:…

    JavaScript 2023年6月11日
    00
  • JavaScript中判断为整数的多种方式及保留两位小数的方法

    JavaScript中判断为整数的多种方式及保留两位小数的方法 判断为整数的多种方式 在JavaScript中,判断一个数是否为整数是经常需要用到的操作。下面列出了常见的几种方法: 取模运算 利用数学中取模运算的特性,即整数x对于任意不等于0的正整数y,x%y的结果只可能是0到y-1之间的整数,如果x % 1等于0,则说明它为整数。具体代码如下: funct…

    JavaScript 2023年6月10日
    00
  • 5款JavaScript代码压缩工具推荐

    当我们的JavaScript代码变得越来越复杂时,它的大小也会随之增加。这意味着每次用户打开我们的网站时,都要下载更多的JavaScript代码。为了优化加载速度和性能,许多开发人员选择使用JavaScript压缩工具来减小代码的大小。本文将为您介绍五个优秀的JavaScript代码压缩工具,并解释如何在您的项目中使用它们。 1. UglifyJS Ugli…

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