angular.isDefined()vs obj.hasOwnProperty()

use*_*068 15 javascript angularjs

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

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

Cét*_*tia 25

angular.isDefined仅测试值是否为undefined:

function isDefined(value){return typeof value !== 'undefined';}
Run Code Online (Sandbox Code Playgroud)

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

例如 :

var test = {};
angular.isDefined(test.toString); // true
test.hasOwnProperty('toString'); // false
Run Code Online (Sandbox Code Playgroud)

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