js核心知识点--不断总结中...

252 阅读1分钟

判断空对象的方法

1. 使用JSON.stringify(对象)方法

let obj = {};
JSON.stringify(obj) === '{}'   // true
obj = {a:1};
JSON.stringify(obj) === '{}'   // false

2.使用for..in遍历对象

function isEmptyObject(obj){
    // 如何能循环就不是空对象,如果不能循环就不是空对象
    // JQ源码中是这样判断的
	for(let key in obj){
    	return false
    }
    return true;
}
let obj = {}
isEmptyObject(obj)			// true

3.使用Object.getOwnPropertyNames()方法

Object.getOwnPropertyNames()
// Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
function isEmptyObject(obj){
	let arr = Object.getOwnPropertyNames(obj)
    return arr.length==0;
}
let obj = {}
isEmptyObject(obj)		// true

4. 使用ES6的Object.keys(),Object.values()方法

Object.keys() 
// Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。
// Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )
function isEmptyObject(obj){
	let arr = Object.keys(obj) 
    return arr.length==0;
}
let obj = {}
isEmptyObject(obj)

判断对象上是否有某个属性?

使用in运算符 (in也会判断原型上的方法)

  • in运算符:如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。
let obj = {
	name: '11'
}
'name' in obj  			// true
'test' in obj   		// false
'hasOwnProperty' in obj // true

hasOwnProperty

  • hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。
let obj = {
	name: '11'
}
obj.hasOwnProperty('name');				// true
obj.hasOwnProperty('name');				// false
obj.hasOwnProperty('hasOwnProperty');	// false

将金额分成以三个为一组

var str = '36125813';
 function test(str){
  var re =/(?=(?!\b)(\d{3})+$)/g;
  return str.replace(re,',');
}
console.log(test(str))