-6

参照: JavaScript オブジェクト リテラル表記 vs プレーン関数とパフォーマンスへの影響?


関数と関連データをオブジェクト表記に変換することを考えています。パフォーマンス コストはいくらですか (ある場合)。

私は現在、構造化され、オブジェクトになるものを反映する命名規則を関数で使用しています。したがって、オブジェクト リテラル表記は、実際には関数の目的を明確にするものではありません。

とにかく、適切なオブジェクトに変換する予定です。そうすることで、実行速度の面で何か得たり、失ったりしますか? (おそらく逆参照のため?)

以下の関数と関連データをオブジェクト表記に変換しようと考えています。最終的には次のオブジェクトになります。

oFilter
oMenuImage
oTimer
oWindow
oMouseEvent
oElement
oLayout
oTooltip

したがって、オブジェクト oFilter の下の最初の関数を見ると、次のような関数が含まれている可能性があります。

ControlCreate
Store
Restore
ResetThenAnimate
Animate
Spin
SetRotation
Resize
SlideStyleToggle
Get
Set
Enable
Play

完全な Web ページとスクリプトは、 こちらまたはこちら
にありますが、残りは更新されていないホームページにとどまります。

このサイトはかなり大規模な教育プロジェクトです。近い将来、私はオブジェクト リテラル表記 (私が気に入っている) とフレームワークの使用を学習します。既存の関数のリストは次のとおりです (大きいです): すべての「関数 fn」を検索、非表示、正規表現、検索結果 2、現在のドキュメント

function fnFilterControlCreate(filterPlayAll, startIndex, endIndex,
      MdmPtPageJava.js(123):        function fnFilterStore(oObj, oObjImage, filterIndex) {
      MdmPtPageJava.js(133):        function fnFilterRestore(oObj, oObjImage, filterIndex) {
      MdmPtPageJava.js(152):        function fnFilterResetThenAnimate(oObj, oObjImage, filterIndex) {
      MdmPtPageJava.js(179):        function fnFilterAnimate(oObj, oObjImage, filterIndex, flMultiplier) {
      MdmPtPageJava.js(201):        function fnFilterSpin(oObj, oObjImage, filterIndex, IsImageLarge) {
      MdmPtPageJava.js(242):        function fnFilterSetRotation(oObj, oObjImage, filterIndex, deg) {
      MdmPtPageJava.js(259):        function fnFilterResize(oObj, oObjImage, filterIndex, flMultiplier, IsImageLarge, imgWidthPassed, imgHeightPassed, DoHeight) {
      MdmPtPageJava.js(331):        function fnFilterSlideStyleToggle(oObj, oObjImage, filterIndex) {
      MdmPtPageJava.js(357):        function fnFilterGet(filterPlayAll, startIndex, endIndex,
      MdmPtPageJava.js(446):        function fnFilterSet(filterPlayAll, startIndex, endIndex,
      MdmPtPageJava.js(463):        function fnFilterEnable(filterPlayAll, startIndex, endIndex,
      MdmPtPageJava.js(494):        function fnFilterApply(filterPlayAll, startIndex, endIndex,
      MdmPtPageJava.js(529):        function fnFilterPlay(playDirection, timerMethod, IsImageLarge,
      MdmPtPageJava.js(568):        function fnFilterStop(filterPlayAll, startIndex, endIndex,
      MdmPtPageJava.js(628):        function fnFilterGetByIndex(
      MdmPtPageJava.js(991):        function fnFilterGetByTagName(filterTagName) {
      MdmPtPageJava.js(1002):        function fnFilterGetRandom(filterClassSingle, filterClassDynamic, filterIndex,
      MdmPtPageJava.js(1022):        function fnFilterTimingGetByIndex() {
      MdmPtPageJava.js(1029):        function fnFilterTimingGetRandom() {
      MdmPtPageJava.js(1037):        function fnStyleBackgroundToggle(oObj, oObjImage, filterIndex) {
      MdmPtPageJava.js(1058):        function fnMenuImgAnimationPlayFirst(playDirection, timerMethod, IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge,
      MdmPtPageJava.js(1076):        function fnMenuImgAnimationPlayNext(playDirection, timerMethod, IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge,
      MdmPtPageJava.js(1095):        function fnMenuImgAnimationPlayAgain(playDirection, timerMethod, IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge,
      MdmPtPageJava.js(1110):        function fnMenuImgAnimationPlay(playDirection, timerMethod, IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge,
      MdmPtPageJava.js(1422):        function fnTimerStart(timerType, timerGroup, timerId, IsImageLarge,
      MdmPtPageJava.js(1548):        function fnTimerSet(timerType, timerGroup, timerId, IsImageLarge,
      MdmPtPageJava.js(1629):        function fnTimerFilterStart(playDirection, timerMethod, IsImageLarge,
      MdmPtPageJava.js(1688):        function fnTimerMoveStart(playDirection, timerMethod, IsImageLarge,
      MdmPtPageJava.js(1794):        function fnTimerFilterStepDoGroup(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(1910):        function fnTimerFilterStepDoItem(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2041):        function fnTimerMoveStepDoGroup(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2151):        function fnTimerMoveStepDoItem(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2460):        function fnTimerSetDisplayed(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2505):        function fnTimerStop(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2536):        function fnTimerMoveTest(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2558):        function fnTimerObjectSet(playDirection, timerMethod, IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge, iImageSize, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(2599):        function fnTimerDeactivate(timerType, timerGroup, timerId, IsImageLarge, timerDoRoot) {
      MdmPtPageJava.js(2636):        function fnTimerDefaults(timerType, timerGroup, timerId, IsImageLarge,
      MdmPtPageJava.js(2899):        function fnTimerBusy(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2921):        function fnTimerObjectExists(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2930):        function fnTimerKeyText(playDirection, timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(2942):        function fnTimerIntervalText(timerType, timerGroup, timerId, IsImageLarge, UseRootKey) {
      MdmPtPageJava.js(2957):        function fnTimerRootKeyText(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(3001):        function fnTimerGetElapsed(timerType, timerGroup, timerId, IsImageLarge) {
      MdmPtPageJava.js(3058):        function fnBodyImagesHtmlBuild() {
      MdmPtPageJava.js(3075):        function fnMenuImgHtmlBuild() {
      MdmPtPageJava.js(3955):        function fnlayoutContainerHeightGetAll() {
      MdmPtPageJava.js(3987):        function fnWindowResize() {
      MdmPtPageJava.js(4324):        function fnWindowBlockWidthAjust()
      MdmPtPageJava.js(4331):        function fnWindowBlockWidth()
      MdmPtPageJava.js(4454):        function fnWindowClientWidth() {
      MdmPtPageJava.js(4500):        function fnWindowSessionLoad() {
      MdmPtPageJava.js(4510):        function fnWindowSessionSave() {
      MdmPtPageJava.js(4525):        function fnWindowCookieLoad() {
      MdmPtPageJava.js(4533):        function fnWindowCookieSave() {
      MdmPtPageJava.js(4541):        function fnWindowCookieBuild() {
      MdmPtPageJava.js(4555):        function fnDocumentLoad() {
      MdmPtPageJava.js(4575):        function fnDocumentLoadInit() {
      MdmPtPageJava.js(4615):        function fnMathNumberRandomGetByRange(filterRangeLow, filterRangeHigh, filterRealFlag) {
      MdmPtPageJava.js(4626):        function fnFontSizeIncrease() {
      MdmPtPageJava.js(4632):        function fnFontSizeDecrease() {
      MdmPtPageJava.js(4643):        function fnDebugStart(debugOption, debugMessage) {
      MdmPtPageJava.js(4680):        function fnMouseEventOverImg(menuImage) {
      MdmPtPageJava.js(4704):        function fnMouseEventOutImg(menuImage) {
      MdmPtPageJava.js(4720):        function fnMouseEventClickImg(menuImage) {
      MdmPtPageJava.js(4758):        function fnWindowPopupOpen() {
      MdmPtPageJava.js(4772):        function fnElementObjectBlockCount() {
      MdmPtPageJava.js(4803):        function fnElementObjectContainerCreate() {
      MdmPtPageJava.js(4836):        function fnElementObjectCreate() {
      MdmPtPageJava.js(5001):        function fnElementGetRef(elementObject, elementObjectId, elementName) {
      MdmPtPageJava.js(5016):        function fnElementGetRefFromElement(element, elementId, elementName, elementSource) {
      MdmPtPageJava.js(5048):        function fnElementCreate(element, elementLayoutFirst) {
      MdmPtPageJava.js(5064):        function fnElementCopy(element, elementLayoutFirst, elementSource, elementStyleDisplay) {
      MdmPtPageJava.js(5111):        function fnElementFindInElement(
      MdmPtPageJava.js(5183):        function fnElementEventsCopy(elementObject, elementSourceObject, elementObjectId, elementSourceObjectId) {
      MdmPtPageJava.js(5260):        function fnElementBreakSet(element, elementId, elementLayoutFirst, elementStyleDisplay, elementStyleVisibility, elsementStyleClear) {
      MdmPtPageJava.js(5328):        function fnConsoleEventLog(mouseEventCurr, mouseEventType, mouseEventObject, mouseEventCurrRootObj,
      MdmPtPageJava.js(5495):        function fnTextReplace(text, stringFind, stringReplace) {
      MdmPtPageJava.js(5506):        function fnWindowError(errorMsg, errorUrl, errorLineNum) {
      MdmPtPageJava.js(5550):        function fnWindowErrorDebug(UseDebugger, errorMsg, errorUrl, errorLineNum) {
      MdmPtPageJava.js(5624):        function fnBrowserGetVs() {
      MdmPtPageJava.js(5635):        function fnBodyConsoleToggle(ConsoleBlock) {
      MdmPtPageJava.js(5908):        function fnLayoutFontSize(layoutMenuIndex) {
      MdmPtPageJava.js(5923):        function fnLayoutNext(layoutMenuIndex) {
      MdmPtPageJava.js(5936):        function fnLayoutCheck(layoutPrefered) {
      MdmPtPageJava.js(5943):        function fnLayoutRefresh(layoutMenuIndex, IsTemporary) {
      MdmPtPageJava.js(5954):        function fnLayoutSelectByIndex(layoutMenuIndexPassed, IsTemporary)
      MdmPtPageJava.js(6603):        function fnElementPosGet(oObjGroupIndex, oObjIndex, DoScroll, DoBase, element, elementWidthDefault, elementHeightDefault) {
      MdmPtPageJava.js(6617):        function fnElementPosCalculate(element, oObjGroupIndex, oObjIndex) {
      MdmPtPageJava.js(6646):        function fnParseInt(stringToParse) { return parseInt("0" + stringToParse); }
      MdmPtPageJava.js(6651):        function fnLayoutTopMaxGet(DoOffset, DoScroll, DoBase, element)
      MdmPtPageJava.js(6679):        function fnLayoutLeftMaxGet(DoOffset, DoScroll, DoBase, element)
      MdmPtPageJava.js(6707):        function fnLayoutWidthMaxGet(DoOffset, DoScroll, DoBase, element, elementWidthDefault)
      MdmPtPageJava.js(6736):        function fnLayoutHeightMaxGet(DoOffset, DoScroll, DoBase, element, elementHeightDefault)
      MdmPtPageJava.js(6818):        function fnMouseEventAddToElement(eventName, eventFunction, eventFunctionName, eventFunctionArgs, oObj) {
      MdmPtPageJava.js(6860):        // function fnMouseZoomHandler(e) {
      MdmPtPageJava.js(6902):            function fnTooltipShow(e, tooltipSourceElementPassed, tooltipId, tooltipInnerHtml, tooltipWidth) 
      MdmPtPageJava.js(6978):                function fnTooltipPos(e, direction)
      MdmPtPageJava.js(7020):                function fnTooltipFade(e, direction)
      MdmPtPageJava.js(7047):                function fnTooltipFadeIncrement(e, direction, beforeFlag)
      MdmPtPageJava.js(7085):                function fnTooltipHide(e) {
      MdmPtPageJava.js(7099):                function fnTooltipStop(e)
      MdmPtPageJava.js(7117):        function fnElementChangeCss(theClass, element, value)
      MdmPtPageJava.js(7151):        function fnMouseEventHandler(e)
      MdmPtPageJava.js(7404):        function fnMouseEventCurrRootObjSet(mouseEventObjectPassed)
      MdmPtPageJava.js(7422):        function fnMouseEventLastSet(e) {
      MdmPtPageJava.js(7433):        function fnMouseEventCurrSet(e) {
      MdmPtPageJava.js(7481):        function fnMouseEventCheckInvalid() {
      MdmPtPageJava.js(7528):        function fnMenuImgSetLock(IsImageLarge, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(7540):        function fnMenuImgHideId(e, IsImageLarge, oObjNextParentId, oObjNextImageId, oObjNextId, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(7568):        function fnMenuImgHide(playDirection, IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(7645):        function fnMenuImgToggleRange(HideImage, HideImageLarge, startIndex, endIndex, IsImageLarge, oObjNextParentId, oObjNextImageId, oObjNextId, iImageSize, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(7766):        function fnMenuImgToggle(IsImageLarge, oObjNextParentId, oObjNextImageId, oObjNextId, iImageSize, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(7816):        function fnMenuImgLayoutRefresh(layoutActionPassed, startIndex, endIndex, IsImageLarge, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(7922):        function fnMenuImgShowIndex(IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge, iImageSize, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(7935):        function fnMenuImgShowStack(timerMethod, IsImageLarge, oObjNextParentId, oObjNextImageId, oObjNextId, iImageSize, oObjGroupIndex, startIndex, endIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(8027):        function fnMenuImgShowId(playDirection, timerMethod, IsImageLarge,
      MdmPtPageJava.js(8111):        function fnMenuImgProcess(playDirection, timerMethod, IsImageLarge, oObjNextParent, oObjNextImage, oObjNext, oObjNextLarge, iImageSize, oObjGroupIndex, oObjGroupImageIndex, oObjLocked, IgnoreLock) {
      MdmPtPageJava.js(8691):        function fnElementGet(Id) { return document.getElementById(Id); }
      MdmPtPageJava.js(8696):        function fnMenuObjectSetAll(oObjGroupIndex, oObjIndex) {
      MdmPtPageJava.js(8866):        function fnMenuObjectTextSet(oObjGroupIndex, oObjIndex) {
      MdmPtPageJava.js(8964):        function fnMenuObjectNameSet(oObjGroupIndex, oObjIndex) {
      MdmPtPageJava.js(9065):        function fnMenuObjectIndexSet(oObj, DoIgnoreError) {
      MdmPtPageJava.js(9202):        function fnMenuObjectIndexSetByName(oObj) {
4

1 に答える 1

0

TJ Crowderが質問に対するコメントで述べているように、 「JavaScript オブジェクト リテラル表記法と単純な関数およびパフォーマンスへの影響は?」:

エンジンが大きく異なるため、JS のパフォーマンスに関する質問は難しいものです。しかし、質問の 2 つのオプションを意味する場合、答えはほぼ間違いなくノーです。エンジンが関数参照を取得すると、呼び出しの実行はどちらの場合も同じになるため、エンジンが関数参照を取得する方法を確認する必要があります。

最初の例では、foo を呼び出すために、エンジンは実行コンテキストのバインディング オブジェクトで foo を検索する必要があります。2 番目の例では、同じ方法で Baz を検索し、次に Baz で foo を検索する必要がありますが、これはより多くの手順です。しかし、それは本当の違いをもたらさないに違いない。

于 2013-07-20T13:23:03.980 に答える