Я просто хочу создать функции внутри функции, к которой можно получить доступ в следующем формате (например, в jquery):
mainFunction().childFunction();
Я думаю, что этого можно достичь с помощью прототипов, но я не знаю, как это сделать. Спасибо.
Возможный дубликат stackoverflow.com/questions/22541712/…
Изучите несколько руководств. Stackoverflow не является обучающей службой. Интернет полон учебных ресурсов. См. Сколько исследовательских усилий ожидается от пользователей Stack Overflow?
на самом деле я пробую что-то вроде funOne().funTwo()
, а не objectOne.functionOne()
. Как будто это в jQuery $("selector").ready()
. спасибо.
Дело в том, что вторая функция вызывается из объекта, независимо от того, существует ли этот объект вне функции или будет возвращен функцией и вызовом в цепочке, вы вызываете вторую функцию из некоторого объекта. Откуда это взялось - это более мелкая деталь.
mainFunction
должен вернуть то, что имеет childFunction()
. Точка просто обращается к свойству возвращаемого значения. Например:
function mainFunction() {
console.info('mainCalled')
return {
childFunction() {
console.info("childCalled")
return this
},
someOtherFunction() {
console.info("someother called")
return this
}
}
}
mainFunction().childFunction()
mainFunction().someOtherFunction()
mainFunction().childFunction().someOtherFunction()
mainFunction()
, например, если я хочу mainFunction().one();mainFunction().two();
и до mainFunction().n()
, что я могу сделать.
возвращаемый объект из mainFunction должен содержать любой метод, который вы хотите вызвать, связанный с вызовом mainFunction.
Поскольку я студент, я не могу понять, что вы пытаетесь сказать, пожалуйста, просто дайте и блокируйте код, тогда я могу понять, и спасибо за ваш интерес.
@Taplar верен - объекту просто нужны дополнительные свойства, например, см. Обновленный код.
Если вы посмотрите на ответ, метод возвращает { childFunction() {} }
, который фактически создает { childFunction: function () {} }
, который является объектом с одним ключом childFunction
, который имеет значение функции, которая может быть вызвана. Если вы хотите, чтобы было доступно больше функций, как и любой другой объект javascript, вы можете добавить дополнительные пары ключ-значение, разделив их запятыми. { thing1: value1, thing2: value2 }
Значения в данном случае являются определениями функций.
хорошо, спасибо, но я не могу понять, что возвращается, это массив или объект. Как это называется?
Основная функция возвращает объект. Вот что означает {}
.
Это объект. {}
в javascript обозначает определение объекта, которое представляет собой элемент с парами ключ-значение. Массив в javascript обозначается []
и имеет числовые ключи, отражающие индекс в массиве.
нет, я думал, что это массив, потому что в объектах они похожи на {property:sasa,propertyTwo:ssgsgwf}
, но похожи на смесь массива и объекта.
может ли кто-нибудь сказать мне, почему мы не используем ключевое слово function для всех функций, которые возвращаем в объекте.
Для того чтобы объединяемые в цепочки функции должны знать только свой контекст определения. Я не согласен с утвержденным ответом. Если вам нужно объединить несколько функций в цепочку, и каждая функция должна возвращать область видимости с несколькими методами, которые также должны быть объединены в цепочку, вы получите очень трудный для чтения фрагмент кода или так называемый спагетти-код.
Таким образом, простое решение состоит в том, что все функции, определенные как объединяемые в цепочку, разделяют область определения, а затем каждая из этих функций возвращает контекст определения или области действия. Контекст определения может быть любым, от самого window
до объекта или даже функции.
var context = this;
function foo() {
// some code execution
return context;
}
function bar() {
// some code execution
return context;
}
function baz() {
// some code execution
return context;
}
// chained together
foo().bar().baz();
Результат тот же, но при таком подходе вы получите более чистый и удобный в сопровождении код.
Надеюсь, вам может помочь и другая точка зрения.
Ваша выделенная строка может быть просто функцией, которая возвращает объект, на котором есть ключ
childFunction
, то есть функция.