5.20 propertyOf
5.20.1 语法
_.propertyOf(object)
5.20.2 说明
传一个对象,返回一个函数。
传入key值到这个函数,返回object中key的属性值。
适用于一个对象取不同key的值。
5.20.3 代码示例
示例一:基础用法
var stooge = {name: 'moe'}; //object
var func = _.propertyOf(stooge); //返回的函数
var value = func('name'); //传key值就行了
_.propertyOf(stooge)('name'); //返回值
console.log(value); // String => moe
示例二:我们为什么不这样子做?
var stooge = {name: 'moe'}; //object
var value = stooge.name; //=> 'moe';
示例三:stooge不定的情况
var stooge = undefined; // stooge的值不受我们自己控制
var value = stooge.name; //=> Uncaught TypeError: Cannot read property 'name' of undefined
示例四:用propertyOf不报错
var stooge = undefined;
var value = _.propertyOf(stooge)('name'); //=> undefined
5.20.4 源码展示
_.propertyOf = function(obj) {
//如果obj等于null,反回空函数
//否则返回后面的函数
return obj == null ? function(){} : function(key) {
return obj[key];
};
};
//这其实是用了柯里化
5.20.5 属性取值,方括号更安全
var val = 1['name'];
val = 1.name; //Uncaught SyntaxError: Unexpected token ILLEGAL
5.20.6 试着实现property和propertyOf
//写下你的代码