2010-10-28 2 views
1

У меня есть очень простой кусок кода (основан на JQuery):Начало «метод не определен», когда она четко определена в JS

var dom_builder = function() { 

    this.table = function(elem,attributes) { 
     return $("<table>").attr(attributes).appendTo(elem); 
    } 

}; 

console.log(dom_builder.table); 

Теперь, когда я пытаюсь запустить его, я получаю следующее сообщение об ошибке: Uncaught TypeError: Object # не имеет метода 'table'

Я не могу на всю жизнь понять, почему я получаю эту ошибку. Я использовал методы таким образом бесчисленное количество раз, без каких-либо проблем.

Любые идеи?

ответ

2
console.log(new dom_builder().table); 
+0

вам нужна скобка, как 'console.log (новый dom_builder(). Таблица())' для этой работы – cambraca

+0

@cambraca синтаксис Анурага действителен. Это все о том, что вы пытаетесь продемонстрировать, и я думаю, что он хотел показать, что функция существует с использованием этого синтаксиса. –

+0

@Adam Backstrom это действительно, но он не будет работать должным образом. Он вернет функцию, а не результат функции, что требуется, нет? – cambraca

3

Попробуйте

var dom_builder = { 

    "table": function(elem,attributes) { 
     return $("<table>").attr(attributes).appendTo(elem); 
    } 

}; 
+0

Приятный, совершенно другой подход, и он работает без необходимости запуска функции, как рекомендовано ниже :) Nice – Naatan

1

dom_builder.table не существует, пока функция не будет работать.

console.log(dom_builder.table); // undefined 
d = new dom_builder(); 
console.log(d.table); // function(elem, attributes) { ... } 
Смежные вопросы