#javascript
#javascript
Вопрос:
У меня есть этот код…
var my = {
helpers: {
getName: function() {
return 'John Doe';
}
}
}
// in another file...
var my = {
helpers: {
getAge: function() {
return '40';
}
}
}
// Test...
$("#myDiv").html(my.helpers.getName " " my.helpers.getAge);
http://jsfiddle.net/MojoDK/8cmV7/
… но getName не определено.
Я надеялся, что javascript был достаточно умен, чтобы объединить его с этим…
var my = {
helpers: {
getName: function() {
return 'John Doe';
},
getAge: function() {
return '40';
}
}
}
Как мне расширить метод (или как он называется), как указано выше? У меня есть несколько «вспомогательных» файлов, которые необходимо «объединить».
Ответ №1:
Избыточность хороша для этого:
my = window.my || {};
my.helpers = my.helpers || {};
my.helpers.getAge = function() {
return 40;
};
Комментарии:
1. Да, это работает… единственное, что раздражает, это то, что VS2013 intellisense видит только «getAge» — есть идеи, почему intellisense VS не видит оба?
2. Мой bad -VS теперь видит это нормально. Не знаю, почему этого не было раньше. Спасибо миллион!
Ответ №2:
Вы также можете использовать http://api.jquery.com/jquery.extend
как в:
var my = {
getName: function() {}
};
$.extend(my, {
getAge: function() {
}
});
Демонстрация: http://jsfiddle.net/7KW3H /
Комментарии:
1. NoDV, но отвечать на вопрос, который не помечен jQuery, с помощью jQuery — плохая идея. Смотрите также Это
2. @NiettheDarkAbsol хотя я согласен, что тег отсутствует, OP использует jQuery в своем примере. Я не говорю, что он должен использовать jQuery.
3. Ну, поскольку я новичок в этом, я хотел бы знать все мои варианты, будь то js или jquery.
4. Хотя нельзя отрицать, что этот код, безусловно, будет работать, меня это беспокоит, потому что бесполезно неэффективно делать что-то в jQuery, когда то же самое в JavaScript так легко доступно 🙂
5. Оба примера работают нормально, хотя пример NiettheDarkAbsol работает всегда, независимо от порядка файлов; jquery.extend работает только после объявления переменной
my
. Это единственный недостаток, который я могу придумать. Хотя я должен сказать, что код jquery выглядит чище.