博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码整洁之道——3、对象和数据结构
阅读量:7030 次
发布时间:2019-06-28

本文共 1412 字,大约阅读时间需要 4 分钟。

一、使用getters和setters

使用getters和setters获取对象数据比简单查找对象属性要好。因为:

1、当你想要做的不仅仅是获取对象属性,你不必查找和修改你代码中的每处访问。

2、使用set可以使验证变简单。

3、封装内部结构。

4、使用get和set,容易打日志和处理错误。

5、比如从服务器获取,你可以延迟加载你的对象属性(?)

Bad:function makeBankAccount() {  // ...  return {    balance: 0,    // ...  };}const account = makeBankAccount();account.balance = 100;Good:function makeBankAccount() {  // 这是一个私有属性  let balance = 0;  // a "getter", 通过返回值使这个属性变成共有属性  function getBalance() {    return balance;  }  // a "setter", 通过返回值使这个属性变成共有属性  function setBalance(amount) {    // 在更新前验证    balance = amount;  }  return {    // ...    getBalance,    setBalance,  };}const account = makeBankAccount();account.setBalance(100);

二、让对象有私有成员

这个可以通过闭包来实现(ES5及以下版本)

Bad:const Employee = function(name) {  this.name = name;};Employee.prototype.getName = function getName() {  return this.name;};const employee = new Employee('John Doe');console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doedelete employee.name;console.log(`Employee name: ${employee.getName()}`); // Employee name: undefinedGood:function makeEmployee(name) {  return {    getName() {      return name;    },  };}const employee = makeEmployee('John Doe');console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doedelete employee.name;console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doe

 

转载于:https://www.cnblogs.com/xxchi/p/7236465.html

你可能感兴趣的文章
【Udacity】朴素贝叶斯
查看>>
shader 讲解的第二天 把兰伯特模型改成半兰泊特模型 函数图形绘制工具
查看>>
python3.5安装Numpy、mayploylib、opencv等额外库
查看>>
优雅绝妙的Javascript跨域问题解决方案
查看>>
Java 接口技术 Interface
查看>>
函数草稿
查看>>
织梦系统学习:文章页当前位置的写法(自认对SEO有用)
查看>>
PHP经验——PHPDoc PHP注释的标准文档(翻译自Wiki)
查看>>
vue input输入框长度限制
查看>>
深入理解Java虚拟机(类加载机制)
查看>>
在500jsp错误页面获取错误信息
查看>>
iOS-CALayer遮罩效果
查看>>
为什么需要版本管理
查看>>
五、Dart 关键字
查看>>
React Native学习笔记(一)附视频教学
查看>>
记Promise得一些API
查看>>
javascript事件之调整大小(resize)事件
查看>>
20145234黄斐《Java程序设计》第六周学习总结
查看>>
【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)...
查看>>
hibernate 和 mybatis区别
查看>>