[Javascript] 내 이름을 찾아줘

2016. 5. 4. 17:08Coders

아직, 자세히는 모르지만, Javascript에서는 Java나 C언어의 클래스와 같은 형태로 코드를 작성할 수 있는데요, 특정 스크립트에서, 나 자신이 사용되어지는 화면 단에서 어떤 변수(Variable)명인지 알아야 할 경우가 생겼습니다.


그래서, 여기저기 찾아보고 짜깁기를 해 보았습니다.

//Find My Object Name
var findMyObjectName = function (obj) {

    //Return Value
    var myName = null;

    //Global Object Keys
    var globalObjects = Object.keys(window);

    //Loop
    for (var i in globalObjects) {
        var key = globalObjects[i];

        //Skip Objects
        if (key == 'webkitStorageInfo' || key == 'webkitIndexedDB')
            continue;

        //Object Compare
        if (window[key] === obj) {
            myName = key;
            break;
        }
    }

    return myName;

};

이것을 어떤 경우에 쓰느냐?

예를 들어, 다음과 같은 클래스(클래스가 맞나요?)와 같은 javascript코드가 있다면,

//생성자 function
var myClass = function () {
    this.myValue = 'Hello';

    //아쉽지만, 이 때에는 아직 variable이 생성되지 않아 알 수 없습니다.
    this.myName = '';
};

myClass.prototype.showMyName = function () {
    this.myName = findMyObjectName(this);
    alert('My name is : ' + this.myName);
};

myClass를 사용하게 될 경우, 다음과 같지요.

var x = new myClass();

var showMyClassName = function () {
    x.showMyName();
};

이 경우, alert 창으로 "My name is : x" 라고 단순하게 뜨겠지만, 활용도는 좋을 것으로 생각 됩니다.

또한, 코드에서 "Object.keys(window);" 이 부분을 보시면, html 페이지의 모든 Variable 이름 목록을 얻을 수 있음을 알 수 있습니다.


'Coders' 카테고리의 다른 글

jqGrid Double Click Cell Edit  (0) 2016.05.25
[Javascript] Bootstrap Modal 위 Modal  (1) 2016.05.04
[MSSQL] 중복 데이터 조회, 삭제  (0) 2016.02.02