//判断是不是对象
function isObject(data){
if(Object.prototype.toString.call(data) == '[object Object]'){
return true;
}else{
return false;
}
}
// 判断对象中是否存在某个值
function hasPrototype(Obj,key){
return new Promise((resolve, reject)=>{
if(Obj.hasOwnProperty(key)) resolve(true)
else reject(false)
})
}
/*
实例
let obj= {
a:'165',
name:"asdas"
}
hasPrototype(obj,"name1").then(res=>{
console.log(res)
}).catch(err=>{
console.log('没有某个属性走这里'+err)
})
*/
//判断对象是否为“{}”,长度为0
//为0 返回false,使用方法和上面类似
function objLength(obj){
// 方案1
return new Promise((resolve, reject)=>{
if(Object.getOwnPropertyNames(obj).length!=0) resolve(true)
else reject(false)
})
// 方案2
// return new Promise((resolve, reject)=>{
// if(Object.keys(obj).length!=0) resolve(true)
// else reject(false)
// })
}
// 拷贝
//0.1浅拷贝,新的改变影响旧的对象,旧的也跟着变
function assign(obj){
let newObj=Object.assign({}, obj);
return newObj;
}
//0.2(方法1)深拷贝,新的改变不影响旧的
function deepClone(obj){
let newObj = JSON.parse(JSON.stringify(obj));
return newObj;
}
//0.2(方法2) 深拷贝
function type (obj) {
let toString = Object.prototype.toString
let map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
'[object String]': 'string',
'[object Function]': 'function',
'[object Array]': 'array',
'[object Date]': 'date',
'[object RegExp]': 'regExp',
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object'
}
return map[toString.call(obj)]
}
// 深拷贝
function cloneDeep (data) {
let t = type(data)
let o
let i
let ni
if (t === 'array') {
o = []
} else if (t === 'object') {
o = {}
} else {
return data
}
if (t === 'array') {
for (i = 0, ni = data.length; i < ni; i++) {
o.push(cloneDeep(data[i]))
}
return o
} else if (t === 'object') {
for (i in data) {
o[i] = cloneDeep(data[i])
}
return o
}
}
js对象常用方法封装
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 记录对象的一些实用使用方法及属性 // Object.assign() 多个对象合并 key相同则后面的覆盖前面的...
- 本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6342.html ...
- 1.1内置对象 js中的对象分为3种:自定义对象、内置对象、浏览器对象前面两种对象是JS基础内容,属于ECMASc...
- 本文参考原文-http://bjbsair.com/2020-03-25/tech-info/6340.html ...