JS의 프로토타입 없는 네임스페이스 예제 | 2판

2730 단어 webdevjavascript
JS에서 프로토타입 기반 상속을 수정하면서 언급할 가치가 있는 정의 방법을 발견했습니다. 일부는 글로벌 및 로컬 범위에서 프로토타입이 없는 네임스페이스를 "오버헤드"라고 말할 수 있습니다. 즉:

// global namespace :
global_namespace = Object.create(null)
global_namespace['namespace_name'] = "global_namespace"; 
console.log(global_namespace) // {namespace_name: 'global_namespace'}

// local namespace :
(function (){
    // TIP # classically we could use function-scoped var instead of let, but ***"let"*** it be :
    let local_namespace = Object.create(null);
    local_namespace['namespace_name'] = "local_namespace"
    return [local_namespace, global_namespace];
}())
/** Console output :
(2) [{…}, {…}]
0: {namespace_name: 'local_namespace'}
1: {namespace_name: 'global_namespace'} # NOTE : global accessible through n-th tuple nesting
length: 2
[[Prototype]]: Array(0)
*/

local_namespace // local_namespace is not defined at <anonymous> # just as expected



Since ed. 2 :



Prototypeless는 또한 생성자 없는 일명 싱글톤을 의미하지만 그 반대는 아닙니다. 즉, 생성자 없는 것은 JS 랜드에서 프로토타입 기반일 수 있습니다.





<시간/>

관련 기사




    <리/>

좋은 웹페이지 즐겨찾기