angular.isDefined()vs obj.hasOwnProperty()

时间:2014-10-06 15:01:24

标签: javascript angularjs

我有一个可能有也可能没有状态的对象。使用angular.js框架时更合适。两者的优点和缺点是什么。

var checkStatus = function(item){
    if(angular.isDefined(item.status){
        //do something
    }
    //VS.
    if(item.hasOwnProperty('status')){
       //do something
    }
}
checkStatus(item);

1 个答案:

答案 0 :(得分:23)

angular.isDefined仅测试值是undefined

function isDefined(value){return typeof value !== 'undefined';}

Object.hasOwnProperty测试该值是否为直接值而不是继承值。

例如:

var test = {};
angular.isDefined(test.toString); // true
test.hasOwnProperty('toString'); // false

info:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty