2014-09-03 3 views
0

Я хочу сделать библиотеку функций, как это (по аналогии с тем, что JQuery делает)JavaScript возвращают значение по умолчанию

var myLib = function (idOfAnElement){ 
    var myElement = document.getElementById(idOfAnElement); 
    return{ 
    getHeight: function(){ 
     return myElement.style.height; 
    }, 
    getWidth: function(){ 
     return myElement.style.width; 
    } 
    } 
} 

Моя проблема в том, что я не знаю, как вернуть

myElement 

по умолчанию, если не существует никакой другой функции называется как

myLib('myId').getHeight; // Returns Height 
myLib('myId')   // Is supposed to return the HTML-Element with id = 'myId' 
+0

Вы что-то пробовали? – fcalderan

ответ

0

Создать привилегированный метод, возвращающий значение частнойmyElement собственности само по себе

var myLib = function (idOfAnElement){ 
    var myElement = document.getElementById(idOfAnElement); 

    return{ 
    getHeight: function(){ 
     return myElement.style.height; 
    }, 
    getWidth: function(){ 
     return myElement.style.width; 
    }, 
    getElement: function() { 
     return myElement; 
    } 
    } 
} 

myLib('myId').getElement(); 
0

То, что вы хотите, может быть достигнуто лишь путем добавления методов, которые вы хотите объект элемента,

Javascript позволяет легко методы добавления к существующим объектам, даже указатель this укажет на связанный объект.

var myLib = function (idOfAnElement){ 
    var myElement = document.getElementById(idOfAnElement); 
    myElement.getHeight: function(){ 
     return this.style.height; 
    } 
    myElement.getWidth: function(){ 
     return this.style.width; 
    } 
    return myElement; 
} 

Примечание: Несмотря на то, что оно работает, я бы не рекомендовал его. Вам нужно позаботиться о том, чтобы не перезаписывать существующие методы/поля, и если несколько библиотек будут использовать тот же подход, вероятность столкновения будет вероятной.

И это НЕ то, что делает jQuery: они создают объект-оболочку. Чтобы получить элемент из jQuery, вам нужно использовать [0], например $('#myEl')[0].

+0

Это ответ на ваш вопрос? если это так, вы можете пометить вопрос как ответ (щелкните галочку рядом с ответом по вашему выбору), если нет, вы можете задать следующий вопрос, и мы объясним. – Iftah

Смежные вопросы