Позвольте мне рассказать вам о моем понимании прототипов. Я не собираюсь сравнивать наследство здесь с другими языками. Я бы хотел, чтобы люди перестали сравнивать языки и просто понимали язык как таковой. Понять прототипы и наследование прототипов так просто, как я покажу вам ниже.
Прототип похож на модель, на основе которой вы создаете продукт. Важно понимать, что когда вы создаете объект, используя другой объект в качестве прототипа, связь между прототипом и продуктом является постоянной. Например:
var model = {x:2};
var product = Object.create(model);
model.y = 5;
product.y
=>5
Каждый объект содержит внутреннее свойство, называемое [[prototype]], к которому может обращаться функция Object.getPrototypeOf()
. Object.create(model)
создает новый объект и устанавливает его свойство [[prototype]] для модели объекта . Следовательно, когда вы сделаете Object.getPrototypeOf(product)
, вы получите объект модель .
Свойства в продукте обрабатываются следующим образом:
Такое связывание объектов с использованием свойства прототипа называется прототипным наследованием. Там так просто, согласен?
Разве этот вопрос не похож на этот: Использование вкладок vim как буферы