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

//写下你的代码