首页 > 编程语言 >JavaScript 对象访问器

JavaScript 对象访问器

时间:2024-08-26 14:51:45浏览次数:13  
标签:lang JavaScript obj language person 对象 counter value 访问

JavaScript 访问器(Getter 和 Setter)

Getter 和 Setter 允许您定义对象访问器(被计算的属性)。

<!DOCTYPE html>
<html lang="en">

<body>
    <p id="demo"></p>
    <script>
        const person = {
            nama: "DianDian",
            age: 20,
            city: "ShenZhen",
            language:"China",
            get lang(){
                return this.language;
            }
        };

        document.getElementById("demo").innerHTML = person.lang;
    </script>

</body>
//China

JavaScript Setter(set 关键词)

本例使用 lang 属性来设置 language 属性的值。

实例

<!DOCTYPE html>
<html lang="en">

<body>
    <p id="demo"></p>
    <script>
        const person = {
            nama: "DianDian",
            age: 20,
            city: "ShenZhen",
            language:"China",
            set lang(value){
                this.language=value;
            }
        };
        person.lang="Dian"
        document.getElementById("demo").innerHTML = person.language;
    </script>

</body>
//Dian

JavaScript 函数还是 Getter?

下面两个例子的区别在哪里?

例子 1

<!DOCTYPE html>
<html>

<body>

    <p id="demo"></p>

    <script>
        // 创建对象:
        var person = {
            firstName: "Bill",
            lastName: "Gates",
            fullName: function () {
                return this.firstName + " " + this.lastName;
            }
        };
        // 使用方法显示对象的数据:
        document.getElementById("demo").innerHTML = person.fullName();
    </script>

</body>

</html>
//Bill Gates

例子 2

<!DOCTYPE html>
<html>

<body>

    <p id="demo"></p>

    <script>
        // 创建对象:
        var person = {
            firstName: "Bill",
            lastName: "Gates",
            get fullName() {
                return this.firstName + " " + this.lastName;
            }
        };
        // 使用 getter 显示对象的数据:
        document.getElementById("demo").innerHTML = person.fullName;
    </script>

</body>

</html>
//Bill Gates

例子 1 以函数形式访问 fullName:person.fullName()。

例子 2 以属性形式访问 fullName:person.fullName。

第二个例子提供了更简洁的语法。

数据质量

使用 getter 和 setter 时,JavaScript 可以确保更好的数据质量。

在本例中,使用 lang 属性以大写形式返回 language 属性的值:

实例

<!DOCTYPE html>
<html lang="en">

<body>
    <p id="demo"></p>
    <script>
        const person = {
            nama: "DianDian",
            age: 20,
            city: "ShenZhen",
            language: "China",
            get lang() {
                return this.language.toUpperCase();
            }
        };

        document.getElementById("demo").innerHTML = person.lang;
    </script>

</body>
//CHINA

在本例中,使用 lang 属性将大写值存储在 language 属性中:

实例

<!DOCTYPE html>
<html lang="en">

<body>
    <p id="demo"></p>
    <script>
        var person = {
            nama: "DianDian",
            age: 20,
            city: "ShenZhen",
            language: "",
            set lang(lang) {
                this.language = lang.toUpperCase();
            }
        };
        person.lang = "China"
        document.getElementById("demo").innerHTML = person.language;
    </script>

</body>
//CHINA

一个计数器实例

实例

<!DOCTYPE html>
<html>

<body>

    <h1>JavaScript Getter 和 Setter</h1>

    <p>创建完美的计数器对象:</p>

    <p id="demo"></p>

    <script>
        var obj = {
?? counter : 0,
?? get reset() {
?????? this.counter = 0;
?? },
?? get increment() {
?????? this.counter++;
?? },
?? get decrement() {
?????? this.counter--;
?? },
?? set add(value) {
?????? this.counter += value;
?? },
?? set subtract(value) {
?????? this.counter -= value;
?? }
};
        // 操作计数器:
        obj.reset;
        obj.add = 5;
        obj.subtract = 1;
        obj.increment;
        obj.decrement;
        // 显示计数器:
        document.getElementById("demo").innerHTML = obj.counter;
    </script>

</body>

</html>

Object.defineProperty() 方法也可用于添加 Getter 和 Setter:

实例

<!DOCTYPE html>
<html>

<body>

    <h1>JavaScript Getter 和 Setter</h1>

    <p>创建完美的计数器:</p>

    <p id="demo"></p>

    <script>
        // 定义对象
        var obj = { counter: 0 };

        // 定义 Setter 和 Getter
        Object.defineProperty(obj, "reset", {
???? get : function () { this.counter = 0; }
});
        Object.defineProperty(obj, "increment", {
???? get : function () { this.counter++; }
});
        Object.defineProperty(obj, "decrement", {
???? get : function () { this.counter--; }
});
        Object.defineProperty(obj, "add", {
???? set : function (value) { this.counter += value; }
});
        Object.defineProperty(obj, "subtract", {
???? set : function (value) { this.counter -= value; }
});

        // 操作计数器:
        obj.reset;
        obj.add = 5;
        obj.subtract = 1;
        obj.increment;
        obj.decrement;
        document.getElementById("demo").innerHTML = obj.counter;
    </script>

</body>

</html>

标签:lang,JavaScript,obj,language,person,对象,counter,value,访问
From: https://blog.csdn.net/2301_78133614/article/details/141564149

相关文章

  • [javascript] 使用 puppeteer 包模拟 chrome 自动化
    npmipuppeteerconstpuppeteer=require('puppeteer');functionsleep(ms){returnnewPromise(resolve=>setTimeout(resolve,ms));}asyncfunctionrun(){constbrowser=awaitpuppeteer.launch({headless:false,args:['--st......
  • JS实现对象只复制已存在的属性
    JavaScript实现只复制已存在属性的笔记在JavaScript中,如果需将一个对象的属性复制到另一个对象中,但只复制目标对象中已经存在的属性,可以使用以下几种方法:1.手动遍历属性通过遍历source对象的属性,并判断target对象中是否存在对应属性,决定是否进行复制。constsource=......
  • 如何使用 AWS CLI 为私有 AWS S3 存储桶中的对象创建预签名 URL
    本文档的目的是介绍使用AWSCLI为s3对象创建预签名URL的步骤。欢迎来到雲闪世界。快速事实“如果您使用预签名URL,则无需将存储桶公开,事实上,最好不要这样做。”—AWSSupport背景AmazonWebServices简单存储服务(AWSS3)是AWS的服务之一,您可以以低廉的价格......
  • WordPress插件存在严重缺陷,允许黑客获取管理员访问权限
    近日,网络安全研究人员披露了WordPress的LiteSpeedCache插件中的一个严重安全漏洞,该漏洞可能允许未经身份验证的用户获得管理员权限。国际知名网络黑客安全专家、东方联盟创始人郭盛华在周一的一份报告中表示:“该插件存在未经身份验证的权限提升漏洞,任何未经身份验证的访问者都......
  • C++类和对象(下):初始化列表、explicit关键字、友元函数、友元类
    文章目录C++类和对象9、初始化列表9.1构造函数体赋值9.2初始化列表9.3explicit(显示)关键字10、友元10.1友元函数10.2友元类C++类和对象9、初始化列表一个类的构造函数要初始化成员变量有两种方式,一种是构造函数体赋值,另一种是初始化列表。9.1构造函数体赋值......
  • Javascript之函数式编程
    一、是什么函数式编程是一种"编程范式"(programmingparadigm),一种编写程序的方法论主要的编程范式有三种:命令式编程,声明式编程和函数式编程相比命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算......
  • JavaScript中的内存泄露
    一、是什么内存泄漏(Memoryleak)是在计算机科学中,由于疏忽或错误造成程序未能释放已经不再使用的内存并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费程序的运行需要内存。只要程序提......
  • PHP基础之面向对象讲解
    目录1面向对象1.1PHP类定义1.2创建对象1.3构造&析构函数1.3.1构造函数1.3.2析构函数1.4继承1.4.1方法重写1.4.2父子类初始化顺序1.4.3示例说明1.5访问控制1.5.1属性的访问控制1.5.2方法的访问控制1.6接口&抽象1.6.1接口1.6.2抽象类1.7关键字1.7.1parent,self,t......
  • 56个JavaScript 实用工具函数助你提升开发效率!
    今天来看看JavaScript中的一些实用的工具函数,希望能帮助你提高开发效率!整理不易,如果觉得有用就点个关注鼓励一下吧!1.数字操作(1)生成指定范围随机数export const randomNum = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;(2)数字千分......
  • Java行为型设计模式-访问者模式(含二叉树场景示例)
    1.访问者模式简介访问者模式(VisitorPattern)是一种行为型设计模式,其主要目的是将数据结构与数据操作解耦。用于将数据结构和在数据结构上的操作分离开来。‌这种模式允许在不修改数据结构的情况下,定义新的操作。2.访问者模式角色访问者模式的主要角色包括:2.1抽象访问......