首页 > 代码库 > 代码整洁之道——3、对象和数据结构
代码整洁之道——3、对象和数据结构
一、使用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 Doe delete employee.name; console.log(`Employee name: ${employee.getName()}`); // Employee name: undefined Good: function makeEmployee(name) { return { getName() { return name; }, }; } const employee = makeEmployee(‘John Doe‘); console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doe delete employee.name; console.log(`Employee name: ${employee.getName()}`); // Employee name: John Doe
代码整洁之道——3、对象和数据结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。