jirengu / frontend-interview

前端笔试面试题题库
1.29k stars 139 forks source link

JS 类型判断相关问题 #12

Open jirengu opened 7 years ago

jirengu commented 7 years ago
  1. 写一个函数 isEmptyObject,判断一个对象是不是空对象
    function isEmptyObject(obj){
    // todo...
    }
    isEmptyObject( {} ); //true
    isEmptyObject( {a:1} ) ; //false
  2. 如果可以用 ES5,那么你会如何写这个函数?
RookieDay commented 7 years ago

@jirengu
老师 你好,第二个题目好像有点念不通,“用 ES5的方法如何来 重新函数 这个函数 ” , 不知道是不是表述有点问题。 ^_^

Cedric-song commented 7 years ago
function isEmptyObject(obj){
  if( arguments[0] && typeof arguments[0] === "object" ) {
    for ( var key in arguments[0] ) {
     return true
   }
    return false
  }
  throw "obj need to be an object"
}
FrankFang commented 7 years ago

@RookieDay 已改

oceanpad commented 7 years ago

ES6:

function isEmptyObject(obj){
   return Object.keys(obj).length === 0 && obj.constructor === Object
}

Pre-ECMA 5:

function isEmptyObject(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return JSON.stringify(obj) === JSON.stringify({});
}

jQuery:

jQuery.isEmptyObject({});

Joker-Qu commented 7 years ago

function isEmptyObject(obj){ var a = {} return JSON.stringify(obj) === JSON.stringify(a) }

ke1vin4real commented 7 years ago

@upfain 需要用hasOwnProperty来检测是本地属性还是原型链上的属性

hazeFlame commented 6 years ago

function isEmptyObject(obj) { if(Object.keys(obj).length){ return false }else{ return true } }

hazeFlame commented 6 years ago

function isEmptyObject(obj) { return Object.keys(obj).length ? true : false }