Насколько вы правы, «разрешение функций может быть медленным».
Итак, давайте посмотрим ..
После просмотра прототипа, если вы сделали myMethod методом-прототипом, например: aObj.prototype.myMethod = somemethod, то первый способ, myBObj.myMethod (), получит «разрешение» со второй попытки, когда он попадает в унаследованный метод-прототип, так как экземпляр myBObj myMethod не был установлен.
Второй способ, myBObj.myAObj.myMethod (), получит «разрешение разрешения» со второй попытки при попадании в метод прототипа, так как, опять же, метод экземпляра не был установлен (myAObj = new aObj () делает не установлен myAObj.myMethod, но будет установлен myAObj.prototype.myMethod,
То, как вы это делаете, разницы нет.
Чтобы получить выигрыш в производительности от любого из способов, которыми вы делаете это
либо убедитесь, что метод экземпляра, который вы собираетесь вызвать, установлен, а затем ссылаетесь на него:
bObj.myMethod=bObj.prototype.myMethod;
bObj.myMethod();
или
myAObj.myMethod=myAObj.prototype.myMethod;
bObj.myMethod();
в обоих случаях первый поиск получает метод экземпляра, и он используется, что лучше.
Чтобы получить лучший прирост производительности, полностью исключите поиск
и ссылка на способ-прототип:
myBobj.prototype.myMethod();
или
myBObj.myAObj.prototype.myMethod();
в этих двух последних случаях нет необходимости в «разрешении функции».
Хотя мы все знаем, что функция Function интерпретируется каждый раз, когда она используется
и объявленные функции компилируются (интерпретируются) один раз и, таким образом, быстрее, это остается чем-то вроде загадки, если установка объявленной функции на прототип объекта фактически заставляет ее выполняться быстрее.
Если бы вы могли это выяснить, вы бы точно знали, как получить функцию, любую функцию,
выполнить как можно быстрее: объявить или установить в качестве функции-прототипа, в зависимости от того, что лучше, если таковой имеется, и, если метод-прототип работает быстрее, избегайте любых поисков в цепочке прототипов, напрямую ссылаясь на метод-прототип.