2016-07-27 2 views
0

Supouse У меня есть следующий метод, чтобы вставить значение в ячейке таблицы:Использование метода в JavaScript

var objeto = { 
    row: function(rowId){ 
     return { 
      cell: function(cellClass){ 
       return { 
        set: function(val){ 
        document.querySelector(rowId+' '+cellClass).innerHTML = val; 
        } 
       } 
       //Or just return the value 
      } 
     } 
    } 
}; 

Я знаю, вставить значение, мне нужно использовать:

objeto.row('#rowid').cell('.cellclass').set('hello'); 

Но Если я хочу получить значение ячейки, используя:

var data = objeto.row('#rowid').cell('.cellclass'); 

Какой метод мне нужно использовать?

ответ

0

Вы можете использовать следующую структуру:

var objeto2 = { 
    row: function(rowId){ 
     return { 
      cell: function(cellClass){ 
       return { 
        value: function(val){ 
         if (val) { 
          document.querySelector(rowId + ' ' + cellClass).innerHTML = val; 
         } else { 
          return document.querySelector(rowId + ' ' + cellClass).innerHTML; 
         } 
        } 
       } 
      } 
     } 
    } 
}; 

objeto.row('#rowid').cell('.cellclass').value('hello'); // set value 
objeto.row('#rowid').cell('.cellclass').value();  // get value 
+0

Но здесь вы удаляете функцию 'set' – Newton

+0

@Newton Разве это не лучше? Вам нужна только одна функция для установки и получения. – akinuri

0

Проблема в том, возвращаемый тип любой функции фиксирован. Это означает, что если он возвращает объект, всегда возвращается объект из этой функции. То, что вы хотите сделать, - вы пытаетесь извлечь выгоду из полиморфолизма, но его нельзя сделать таким образом.

var objeto = { 
    row: function(rowId){ 
     return { 
      cell: function(cellClass,newValue){ 
        this.set = function (newValue){ 
        if(typeof newValue != "undefined"){ 
         document.querySelector(rowId+' '+cellClass).innerHTML = val; 
        } 
        } 
       this.set(newValue); 
       return document.querySelector(rowId+' '+cellClass).innerHTML; 
       } 
       //Or just return the value 
      } 
     } 
    } 
}; 

Таким образом, вы можете использовать

вар CurrentValue = objeto.row ('# ROWID') клетки (»cellclass., 'Привет'). или

var currentValue = objeto.row ('# rowid'). Cell ('. Cellclass');

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