169 похожих чатов

Подскажите как правильно наследовать через Object.setPrototypeOf Где тут ошибка?

28 ответов

11 просмотров

То что в свойстве .prototype ещё не прототип, это станет прототипом когда выполнится new.

S- Автор вопроса
S
Так я же выполняю new в строке 14?

А в свойстве .prototype ничего нет.

S- Автор вопроса
jk
А в свойстве .prototype ничего нет.

не понятно( Вот пример наследования в строке 4 понятен и нагляден. А как то можно сделать также в строке 12?

S
не понятно( Вот пример наследования в строке 4 пон...

Ну ты берёшь классический и понятный пример наследования и хочешь его извратить, с какой целью? const myPrototype = { prop: 1 } function A () {} const instance = new A() Object.setPrototypeOf(instance, myPrototype) console.log(instance.prop)

setPrototypeOf в __proto__ пишет помойму

S- Автор вопроса
jk
Ну ты берёшь классический и понятный пример наслед...

цель уйти от proto в сторону Object.setPrototypeOf

S- Автор вопроса
Lupusregina[beta]
покажи код

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/proto вот тут написано, что __proto__ не рекомендуется использовать

S
цель уйти от proto в сторону Object.setPrototypeOf

const myPrototype = { prop: 1 } function A () {} A.prototype = Object.create(myPrototype) const instance = new A() console.log(instance.prop)

S- Автор вопроса
Lupusregina[beta]
покажи код

вот я и решил переписать с __proto__ на что-то другое, более стандартизированое

S
вот я и решил переписать с __proto__ на что-то дру...

Сеттер proto действительно не красивый.

S
вот я и решил переписать с __proto__ на что-то дру...

ты в коде new Делаешь, а new устаналивает свой прототип

S- Автор вопроса
Lupusregina[beta]
ты в коде new Делаешь, а new устаналивает свой про...

new не устанавливает свой прототип, new создает новый объект в котором прототип НЕ создается. Но когда обращаешся к свойству которого нет в объекте он ищет его в прототипе который уже был создан. Да же наверно так, прототип как объект создается только 1 раз, а новые объекты создаются при каждом новом new Или я не прав?

S
new не устанавливает свой прототип, new создает но...

new создаёт новый объект без прототипа, выполняет в его контексте функцию-конструктор, и выставляет этому объекту тот объект прототипа что был в свойстве .prototype

S
new не устанавливает свой прототип, new создает но...

function _new(constructor, ...args) { const ctx = { __proto__: constructor.prototype } constructor.call(ctx, ...args) return ctx }

S- Автор вопроса
Lupusregina[beta]
function _new(constructor, ...args) { const ctx ...

Кстати всегда хотел узнать как расшифровываются эти три буквы ctx?

S
new не устанавливает свой прототип, new создает но...

В данном примере мы видим две цепочки прототипов. В момент выполнения new происходит как бы их "переключение". function A () {} A.staticMethod = function () { console.log('static') } A.prototype.prototypeMethod = function () { console.log('proto') } function B () {} Object.setPrototypeOf(B, A) B.prototype = Object.create(A.prototype) B.prototype.constructor = B B.staticMethod() const instance = new B() instance.prototypeMethod()

S- Автор вопроса
S- Автор вопроса
jk
В данном примере мы видим две цепочки прототипов. ...

В вашем примере B.prototype = Object.create(A.prototype) Почему нельзя написать вот так? B.prototype = A.prototype

S
В вашем примере B.prototype = Object.create(A.prot...

Можно, но прототипы должны расширяться. В инстансе объекта B будут дополнительные свойства для B, которые не нужны в A.

S
В вашем примере B.prototype = Object.create(A.prot...

кста, зачем ты вообще с этим возишься? почему class не возмешь?

S- Автор вопроса
Lupusregina[beta]
кста, зачем ты вообще с этим возишься? почему clas...

Я отказался от class так как там нельзя узнать имя функции из самой функции Этот метод не работает, а альтернативы я не нашел var Foo = function() { arguments.callee.name;// Foo };

S- Автор вопроса
Lupusregina[beta]
имя чего?

Нет, имя метода

S
Нет, имя метода

ну через строку узнай

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта