Appearance
实际应用
本节目标:理解“实际应用”的核心思路,并能把它用于实际开发或面试表达。
**函数返回值简写**
function getPoint() { const x = 1; const y = 10; return {x, y};}
getPoint()// {x:1, y:10}**CommonJS** **模块输出一组变量**
let ms = {};
function getItem (key) { return key in ms ? ms[key] : null;}
function setItem (key, value) { ms[key] = value;}
function clear () { ms = {};}
module.exports = { getItem, setItem, clear };// 等同于module.exports = { getItem: getItem, setItem: setItem, clear: clear};属性的赋值器(setter)和取值器(getter),事实上也是采用这种写法。
const cart = { _wheels: 4,
get wheels () { return this._wheels; },
set wheels (value) { if (value < this._wheels) { throw new Error('数值太小了!'); } this._wheels = value; }}**打印对象**
let user = { name: 'test'};
let foo = { bar: 'baz'};
console.log(user, foo)// {name: "test"} {bar: "baz"}console.log({user, foo})// {user: {name: "test"}, foo: {bar: "baz"}}
上面代码中,console.log直接输出user和foo两个对象时,就是两组键值对,可能会混淆。把它们放在大括号里面输出,就变成了对象的简洁表示法,每组键值对前面会打印对象名,这样就比较清晰了。**注意**
简写的对象方法不能用作构造函数,会报错。
const obj = { f() { this.foo = 'bar'; }};
new obj.f() // 报错
上面代码中,f是一个简写的对象方法,所以obj.f不能当作构造函数使用。