关闭

getter 和 setter 和 defineProperty

时间: 2021-02-24阅读: 222标签: 函数

getter:将对象属性绑定到查询该属性时将被调用的函数

    说人话就是,当你调用一个getter属性时会调用定义好的get函数,这个函数会返回一些运算结果的值(一般是用其他属性作为运算值),这个值就作为你调用的这个属性的值。

setter: 当尝试设置属性时,set语法将对象属性绑定到要调用的函数

    说人话就是,当你设置一个setter属性的值时会调用定义好的set函数(可以传入参数),这个函数会将这个对象的其他属性设置为传入的参数计算过后的值。

使用defineProperty在现有对象上定义getter:

要随时将getter添加到现有对象上,使用Object.defineProperty()
const o = { a:0 } Object.defineProperty(o, 'b', { get: function() {return this.a + 1}}); console.log(o.b) // Runs the getter, which yields a + 1(which is 1)


使用defineProperty为当前对象定义setter

const o = { a: 0 } Object.defineProperty(o, 'b', {set: function(x) { this.a = x/2; }}); o.b = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' property console.log (o.a) // 5

__EOF__


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/10174

一个简单的函数消灭业务代码的低级错误

日常的前端开发业务代码中,我们经常都需要调试数据,所以要经常更改某些参数的初始化数据,或者更改过程中的数据。但是很多时候,改了数据调试完之后就忘记改回去了,某个调试的场景是依赖一个参数的修改还好

Jquery的toggle()函数

toggle()函数用于切换元素的显示/隐藏 jQuery还有一个同名的事件函数,toggle(),用于绑定click事件并在触发时轮流切换执行不同的事件处理函数。

JS箭头函数用处/示例

在现代JS中最让人期待的特性就是关于箭头函数,用=>来标识。箭头函数有两个主要的优点:更简短的函数;更直观的作用域和this的绑定(不绑定this)

vue生命周期简介和钩子函数

简单的来说一下vue的生命周期函数:beforeCreate el 和 data 并未初始化,created 完成了data数据的初始化,el没有,beforeMount 完成了虚拟el和data初始化

JavaScript函数创建的细节

如果你曾经了解或编写过JavaScript,你可能已经注意到定义函数的方法有两种。即便是对编程语言有更多经验的人也很难理解这些差异。在这篇博客的第一部分,我们将深入探讨函数声明和函数表达式之间的差异。

Js函数拓展

箭头函数的作用域永远是定义时的作用域,因此不受严格模式,call,bind,apply方法的影响。 想改变箭头函数作用域:将箭头函数定义在一个普通函数中。想改变这个普通函数作用域,我们可以改变箭头函数的作用域

什么是匿名函数、什么是闭包函数?

在前端面试中面试官基本都会问到什么是匿名函数、什么是闭包函数。匿名函数顾名思义就是没有名字的函数,通常我们所写的函数都是这样的:

JavaScript push() 方法详解

push() 方法主要用于向数组的末尾添加一个或多个元素,其返回值为添加后新的长度,即push后的数组长度,该值为number类型。介绍:一个数组中添加新元素、把一个数组的值赋值到另一个数组上、在对象使用push

JavaScript 函数式编程导论

近年来,函数式编程(Functional Programming)已经成为了JavaScript社区中炙手可热的主题之一,无论你是否欣赏这种编程理念,相信你都已经对它有所了解。即使是前几年函数式编程尚未流行的时候

如何实现 lodash.get 函数及可选链操作简化取值

lodash 基本上成为了 js 项目的标配工具函数,广泛应用在各种服务端以及前端应用中,但是它的包体积略大了一些。对于服务端来说,包的体积并不是十分的重要,或者换句话说,不像前端那样对包的体积特别敏感,一分一毫都会影响页面打开的性能,从而影响用户体验。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!