好程序员web前端学习路线之在JavaScript中使用getters和setter

好程序员web前端学习路线之在JavaScript中使用getters和setter,大多数面向对象的编程语言都存在getter和setter,包括JavaScript。它们是代码构造,可帮助开发人员以安全的方式访问对象的属性。使用getter,您可以从外部代码访问(“获取”)属性的值,而setter允许您更改(“设置”)它们的值。我们将向您展示如何在JavaScript中创建getter和setter。

  JavaScript对象可以具有多个属性和存储的静态数据和动态功能的方法。属性是静态键值对,而方法是特定于对象的函数。

  例如,Car.color可以是属性,而Car.drive()可以是Car对象的方法。使用getter,您可以访问Car对象的color属性,使用setter,您可以修改其值(例如,从蓝色变为黑色)。

  使用getter和setter,您只能获取和设置属性的值,而不能获取方法,因为方法不是静态的。

  您可以通过三种不同的方式创建getter和setter:

使用默认方法语法(getter和setter方法),
使用get和set关键字,
使用Object.defineProperty()方法。
  

Getters和Setters

Getters和Setters使你可以快速获取或设置一个对象的数据。一般来说,一个对象拥有两个方法,分别用于获取和设置某个值,比如:

{

  getValue: function(){

  return this._value;

  },

  setValue: function(val){

  this._value = val;

  }

}

用这种方式写JavaScript的一个明显的好处是:你可以用它来隐藏那些不想让外界直接访问的属性。

吸气方法

获取对象属性的最简单方法是使用每个属性的默认方法语法定义getter。让我们看一个如何使用这种技术创建getter的示例。该MYCAR对象有两个属性:颜色和制作。这是您使用对象文字创建它的方法:

var myCar = {

color:“blue”,

make:“Toyota”

};

如果需要,可以使用以下代码直接访问颜色并创建属性:

myCar.color;

// 蓝色

myCar.make;

//丰田

尽管这种技术有效,但使用getter而不是直接调用属性具有许多优点。例如,您可以在检索其值之前对属性执行操作或检查(例如 if-else语句)。

关于get关键字最重要的一点是它定义了一个访问器属性,而不是一个方法。因此,它不能与存储其访问的值的数据属性具有相同的名称。在上面的代码中,defColor 和defMake是数据属性,而color和make是访问器属性。

这也是为什么你需要使用在getter名称之后不使用括号的属性语法来调用getter的原因(例如myCar.color)。

由于旧版IE8不支持get关键字,因此如果您需要支持旧版浏览器,请使用getter方法。

结论

在创建JavaScript对象时,您不一定必须使用getter和setter,但在许多情况下它们可能会有所帮助。最常见的用例是(1)保护对数据属性的访问,以及(2)在获取或设置其值之前向属性添加额外的逻辑。

原文地址:https://blog.51cto.com/14256902/2424933

时间: 2024-10-29 10:47:53

好程序员web前端学习路线之在JavaScript中使用getters和setter的相关文章

好程序员web前端学习路线分享jQuery学习技巧

好程序员web前端学习路线分享jQuery学习技巧,jQuery在web前端学习中是一个必不可少的内容,很多小伙伴都在学习这阶段的时候遇到问题,今天我们就来聊一下jQuery,让我们一起来看一看吧! 1.关于页面元素的引用 通过jquery的$引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法. 2.jQuery对象与dom对象的转换 只有jquery对象才能使用jquery定义的方

好程序员web前端学习路线分享web测试之Js中的函数

好程序员web前端学习路线分享web测试之Js中的函数,在JS中,一般使用函数其实就是为了封装某些操作,或者把编写的程序进行模块化的操作. 一.函数的声明方式 1.普通的函数声明 function box(num1, num2) { return num1+ num2; } 2.使用变量初始化函数 var box= function(num1, num2) { return num1 + num2; }; 3.使用Function构造函数 var box= new Function('num1'

好程序员web前端学习路线大厂面试题详解

好程序员web前端学习路线大厂面试题详解,依赖注入原理 手动实现依赖注入实现方式 - var _global={ - ajax:function(){//申明服务,也可以说是内部类 - this.get=function(){ - //todo:get方式请求数据 - console.log(“get is success”); - }; - This.post=function(){ - //todo:post方式请求数据 - console.log(“post is success”); -

好程序员web前端学习路线分享css模块化方案

好程序员web前端学习路线分享css模块化方案,这篇文章主要介绍了css模块化方案,css的模块化方案可能和js的一样多,下面简单介绍几种主要的模块方案,非常具有实用价值,需要的小伙伴可以参考下. css的模块化方案可能和js的一样多,下面简单介绍几种主要的模块方案.oocss面对对象的规则,主要的原则是两种:分离结构和外观,分离容器和内容.名词解释1.分离结构和外观:增加可重复的设计单元,同时去推进产品和ui对这方面的思考,比如下面的css使用时对象模式的命名和模块化规则.2.分离容器和内容:

好程序员web前端学习路线分享了解AJAX是什么

好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1.异步同步 生活中的同步: 生活中的异步: 在JavaScript语言中,同步和异步的概念刚好相反. 这JavaScript中同步就是:你不执行完上面的代码,那么下面的代码你就别执行:一步一步执行,这就是同步. 异步就是可以一块执行的代码: 进程的概念 进程≠程序 程序从开始到结束的一次执行过程叫做进

好程序员web前端学习路线分享Jsonp详解

好程序员web前端学习路线分享Jsonp详解,Jsonp原理: 咱们先看看POST的数据发送位置: GET的数据发送位置 那什么情况下会发生跨域呢? 当本机请求服务器上数据的时候:会发生跨域: 当本地服务器请求其他服务器数据的时候回发生跨域: 为什么要跨域呢? 同源策略:基于浏览器的安全考虑,浏览器各个厂商之间出现了一个约定,这个约定叫做同源策略.这个约定的主要内容就是,域和域之间数据不共通. 跨域的用途是什么? 当网站发展壮大到一定地步的时候,会建立很多的节点,各个节点的IP是不同的,所以跨域

好程序员web前端学习路线分享纯css绘制各种图形

好程序员web前端学习路线分享纯css绘制各种图形,很多时候,UI设计师为了页面的好看,都会采用很多图形去做装饰,比如三角形.矩形.圆形.椭圆形.对话泡泡等,让整个页面看起来不会太单调.作为前端开发更多的时候,会采用比较快捷的实现方式就是用图片或者背景图来实现页面效果,但是有一个很大的问题就是图片可能会失真,有些情况也会发现用图片或者背景图去实现效果灵活度也不够.那么如果不用图片,用纯CSS也是可以绘制各种图形的,很多人都以为css只能写一些简单的图形,比如长方形.正方形.圆形.椭圆,其实不然,

好程序员web前端学习路线分享前端基础面试题

好程序员web前端学习路线分享前端基础面试题,希望对大家有所帮助. 1.HTML语义化的理解? 答案:HTML语义化就是让页面的内容结构化,便于对浏览器.搜索引擎解析:在没有样式CSS的情况下也以一种文档格式显示,并且是容易阅读的:搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于SEO:使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解. 2.父元素透明,但是又不影响子元素的透明度怎么实现? 答案:方法一:用rgba 方法二:再加上一层与父元素同级的div装载子元素,定位到子元

好程序员web前端学习路线分享函数基础

好程序员web前端学习路线分享函数基础,在这之前先来讲一下函数是什么? 函数就一个代码块,可以是一个完全独立与其它内容没有关系的代码块,也可以是一个与外界环境紧密相关的代码块.函数是一个拥有输入和输出的独立代码块.函数是程序中最重要的组成部分. 函数,是一种封装(将一些语句,封装到函数里面).通过函数可以封装任意多条语句,而且可以在任何地方.任何时候调用执行. 在javascript里,函数即对象,程序可以随意操控它们.函数可以嵌套在其他函数中定义,这样它们就可以访问它们被定义时所处的作用域中的