при экспорте класса без создания его экземпляра, все свойства, которые вы определяют устанавливаются на прототипе. и у вас нет контекста, вам нужно создать экземпляр, и тогда вы сможете использовать «это».
Теперь, что касается вашего примера, «это» внутри вашей функции, ссылаясь на объект правильно, однако вы его не возвращаете.
const MeasurementObject = {
getType(){
return "a"
},
getURL(){
return "b";
},
getScrollToValue(){
return this.getURL();
}
}
var a = MeasurementObject.getScrollToValue()
console.log(a)
Когда вы определяете такой объект, который уже работает над экземпляром, а свойства задаются на объекте, а не на его прототипе.
обновление
Когда вы сделаете это:
class MeasurementClass {
getType(){
return "a"
},
getURL(){
return "b";
},
getScrollToValue(){
return this.getURL();
}
}
что вы получите что-то вроде:
function MeasurementClass(){}
MeasurementClass.prototype.getType = function(){ return "a" }
MeasurementClass.prototype.getURL = function(){ return "b"; }
MeasurementClass.prototype.getScrollToValue = function(){ return this.getURL(); }
И тогда, когда вы пытаетесь к нему доступ без инстанцировании MeasurementClass.getScrollToValue
Yo u пытаются получить доступ к тем, что не существует.
Однако при создании экземпляра функции всех этих свойств прототипа унаследованы к примеру так:
const measurementClass = new MeasurementClass();
measurementClass
будет экземпляром MeasurementClass и наследует все его прототип.
Надеюсь, что поможет немного.
Вы спрашиваете разницу между литералом объекта javascript и функцией или классом? –
Вы отредактировали свой вопрос на совершенно другой вопрос. Спасибо, что потратили время. – naomik
Вы, кажется, полностью изменили свой вопрос. Когда вы вызываете функцию с помощью 'MeasurementObject.getScrollToValue()', 'this' внутри метода будет ссылаться на' MeasurementObject', так что у вас все работает нормально. Не уверен, что вы имеете в виду с * «' this' внутри метода ... ссылается на исполняемый контекст »*. –