3.14 object

3.14.1 语法

_.object(list, [values])

3.14.2说明

将数组转换为对象。传递任何一个单独[key, value]对的列表,或者一个键的列表和一个值得列表。 如果存在重复键,最后一个值将被返回。

3.14.3示例

示例一

var arr1=['moe', 'larry', 'curly'];
var arr2=[30, 40, 50];
var res = _.object(arr1,arr2 );
console.log(res); //=>Object {moe=30, larry=40, curly=50}

返回类型的判断

1.typeof可以解决大部分的数据类型判断,是一个一元运算,放在一个运算值之前,其返回值为一个字符串,该字符串说明运算数的类型,所以判断某个是否为String类型,可以直接 if(typeof(你的值) == "string"){}

以下是各种数据类型返回结果:

var a="string"; console.log(a); //string
var a=1; console.log(a); //number
var a=false; console.log(a); //boolean
var a; console.log(typeof a); //undfined

var a = null; console.log(typeof a); //object
var a = document; console.log(typeof a); //object
var a = []; console.log(a); //object

var a = function(){}; console.log(typeof a) //function   除了可以判断数据类型还可以判断function类型

这样一来就很明显了,除了前四个类型外,null、对象、数组返回的都是object类型;

对于函数类型返回的则是function,再比如typeof(Date),typeof(eval)等。

然后这里就可以再引申出另一个灰常热门并且解决方法已普遍存在的问题,如何判断数据是个数组类型?

2.instance,故名思义,实例,例子,所以instanceof 用于判断一个变量是否某个对象的实例,是一个三目运算式---和typeof最实质上的区别

a instanceof b?alert("true"):alert("false")//注意b值是你想要判断的那种数据类型,不是一个字符串,比如Array

var arr1=['moe', 'larry', 'curly'];
var arr2=[30, 40, 50];
var res = _.object(arr1,arr2 );

console.log(arr1 instanceof Array,res instanceof Array);//true,false
console.log(arr1 instanceof Object,res instanceof Object);//true,true

3.constructor 属性返回对创建此对象的数组函数的引用

就是返回对象相对应的构造函数。从定义上来说跟instanceof不太一致,但效果都是一样的

var arr1=['moe', 'larry', 'curly'];
var arr2=[30, 40, 50];
var res = _.object(arr1,arr2 );

console.log(arr1.constructor == Array,res.constructor == Array);//true,false
console.log(arr1.constructor == Object,res.constructor == Object);//false,true

示例二: 如果数组长度不相等

var arr1=['moe', 'larry', 'curly','mary'];
var arr2=[30, 40, 50];
var res = _.object(arr1,arr2 );
console.log(res);
//=> Object {moe=30, larry=40, curly=50, ...} mary :undefined