包含函数的对象文字表示法的执行速度是否比(全局范围)普通函数(取消引用)更快
Does object literal notation containing functions execute faster than (global scope) plain functions (dereferencing)?
请参阅:JavaScript Object Literal表示法与普通函数和性能含义?
我正在考虑将我的函数和相关数据转换为对象表示法。的性能成本(如果有的话)是多少
我目前在函数中使用了一种命名约定,它是结构化的,反映了将成为对象的内容。因此,对象文字表示法并没有真正为函数的目的添加太多说明。
无论如何,我计划转换为合适的对象。通过这样做,我会在执行速度方面获得或失去任何东西吗?(可能是由于取消引用?)
我正在考虑将以下函数和相关数据转换为对象表示法。我最终会得到以下对象:
o筛选器
oMenuImage
o计时器
o窗口
鼠标事件
o元素
o布局
o工具提示
因此,在查看a时,对象oFilter下面的第一个函数可能包含以下函数:
控制创建
商店
还原
重置动画
动画
旋转
设置旋转
调整大小
幻灯片样式切换
获取
设置
启用
播放
完整的网页和脚本可以找到:此处或此处
但停留在主页上,其余部分不会更新。
该网站是一个相当大的教育项目。在不久的将来,我将学习对象文字表示法(我喜欢)和框架的使用。以下是现有函数的列表(很大):查找所有"函数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) {
正如T.J.Crowder在对"JavaScript对象文字符号与普通函数和性能影响?"问题的评论中所说:
JS中的Perf问题很棘手,因为引擎差异很大。但是如果你指的是问题中的两个选项,答案几乎是当然没有。一旦发动机有了函数引用,就执行两种情况下的调用都是一样的,所以我们必须看看引擎获取函数引用。
在第一个示例中,要调用foo,引擎必须在执行上下文的绑定对象。在第二个示例中,它具有以同样的方式查找Baz,然后在Baz上查找foo,这更重要步骤。但我敢打赌,这并没有真正的区别。
- 正在全局范围中查找JavaScript函数
- 在javascript函数中设置全局变量
- javascript无法重新定义函数内部的全局对象
- javascript 中的全局函数
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- Javascript,从静态函数中打印全局对象
- 全局窗口热键在最小化chrome窗口时调用js函数
- 创建要在其他函数中使用的全局变量
- 从全局函数调用Ember控制器上的方法
- 保留 JQuery Vars 用于另一个函数(全局变量?)
- jQuery-函数全局变量
- jQuery - 如何使这个javascript函数全局化,以便其他函数可以访问它
- JS函数/全局变量的作用域
- Javascript;如何使函数全局可访问
- 全局在什么(函数(全局){一些代码.(这个)做
- 如何使用 (函数(全局) { .. })(这);.
- 我如何使变量newUser定义在一个函数全局
- 函数(全局){..}(this)的工作方式
- 我如何使我的变量包含在这个函数全局