jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/378070 )

Change subject: mw.loader: Use Object.create() instead of $.extend() where 
possible
......................................................................


mw.loader: Use Object.create() instead of $.extend() where possible

For cases where we want a variation of an object with some keys added
or changed, use native Object.create() to create a plain object that
inherits from the other object (without needing to loop and copy each
key/value separately).

This optimisation only works, of course, if the original object
by-reference does not change later.

Also remove hasOwn filter from sortQuery, because it must now consider
inherited keys as well. This filter was already obsolete given mw.loader
already has many unfiltered for-in loops in other places, and just in
general doesn't support environments that extend Object.prototype.

Change-Id: Ib405e32d4598dfb94629c2596ea0804d1c13e7c0
---
M resources/src/mediawiki/mediawiki.js
1 file changed, 8 insertions(+), 10 deletions(-)

Approvals:
  Catrope: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/src/mediawiki/mediawiki.js 
b/resources/src/mediawiki/mediawiki.js
index 0ae45b5..b522486 100644
--- a/resources/src/mediawiki/mediawiki.js
+++ b/resources/src/mediawiki/mediawiki.js
@@ -1499,9 +1499,7 @@
                                        a = [];
 
                                for ( key in o ) {
-                                       if ( hasOwn.call( o, key ) ) {
-                                               a.push( key );
-                                       }
+                                       a.push( key );
                                }
                                a.sort();
                                for ( key = 0; key < a.length; key++ ) {
@@ -1538,10 +1536,9 @@
                         * @param {string} sourceLoadScript URL of load.php
                         */
                        function doRequest( moduleMap, currReqBase, 
sourceLoadScript ) {
-                               var query = $.extend(
-                                       { modules: buildModulesString( 
moduleMap ) },
-                                       currReqBase
-                               );
+                               // Optimisation: Inherit (Object.create), not 
copy ($.extend)
+                               var query = Object.create( currReqBase );
+                               query.modules = buildModulesString( moduleMap );
                                query = sortQuery( query );
                                addScript( sourceLoadScript + '?' + $.param( 
query ) );
                        }
@@ -1630,9 +1627,10 @@
                                                // modules for this group from 
this source.
                                                modules = splits[ source ][ 
group ];
 
-                                               currReqBase = $.extend( {
-                                                       version: 
getCombinedVersion( modules )
-                                               }, reqBase );
+                                               // Optimisation: Inherit 
(Object.create), not copy ($.extend)
+                                               currReqBase = Object.create( 
reqBase );
+                                               currReqBase.version = 
getCombinedVersion( modules );
+
                                                // For user modules append a 
user name to the query string.
                                                if ( group === 'user' && 
mw.config.get( 'wgUserName' ) !== null ) {
                                                        currReqBase.user = 
mw.config.get( 'wgUserName' );

-- 
To view, visit https://gerrit.wikimedia.org/r/378070
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib405e32d4598dfb94629c2596ea0804d1c13e7c0
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Krinkle <krinklem...@gmail.com>
Gerrit-Reviewer: Bartosz DziewoƄski <matma....@gmail.com>
Gerrit-Reviewer: Catrope <r...@wikimedia.org>
Gerrit-Reviewer: Gilles <gdu...@wikimedia.org>
Gerrit-Reviewer: Jack Phoenix <j...@countervandalism.net>
Gerrit-Reviewer: Legoktm <lego...@member.fsf.org>
Gerrit-Reviewer: Phedenskog <phedens...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to