2016-10-03 3 views
0
var foo = { bar: ''}; 

을 강조 대 .isEmpty() 대 Object.isEmpty :는 _.isEmpty (Object)를 자바 스크립트, lodash는, 종종 나는 다음과 같은 코드를 보았다

는 는 는

는 지금까지 내가 아는 한,이 아니다

if(foo.bar.isEmpty()){ //this line most of the time breaks 
     // do something 
    } 


    foo.bar.isEmpty() or foo.bar.isEmpty 
기본 JavaScript/jQuery. Lodash와 Underscore가 프로젝트에 포함되어 있어도 작동하지 않는 것 같습니다.

Lodash 및 밑줄 하지만 사용할 수있는 유일한 방법에 isEmpty()의 구현이 _.isEmpty(foo.bar)

가 왜 빈 배열을 확인하는 올바른 방법을 무엇 foo.bar.isEmpty()?

로 사용할 수 없습니다되어 있습니다 , 개체 또는 문자열? undefined이 방법 isEmpty()가 없기 때문에

+0

파트를 사용해야합니다 // perfectionkills.com/extending-native-builtins/) 대신'_' 네임 스페이스의 모든 것을 노출합니다. 따라서이 라이브러리는'foo.bar.isEmpty' – megawac

+0

에 기능을 노출시키지 않으므로 foo.bar.isEmpty를 사용하면 올바르지 않습니다!. – patz

답변

1

는 즉시 foo.bar (또는 foo가) undefined하고 당신이 그것을 후에 예를 isEmpty()를 들어, 다른 기능을 체인 것처럼, 스크립트가 중단됩니다. 객체 속성의 값이 일반 JS에 빈 문자열을 보유하고있는 경우

이 확실하게 확인하려면 (HTTP [어떤 프로토 타입을 확장 할 수 없습니다/lodash 철학을 강조한다]의

if (foo && foo.bar && foo.bar !== '') 
+0

빈 문자열 ""은 필드가 서버 코드에 의해 채워지면 emtpy {} 또는 emtpy []가 될 것이고,이를 위해 아마도 _.isEmpty() – patz