проверьте этот скрипт
https://jsfiddle.net/ponmudi/tqmya6ok/1/
class Animal {
constructor(type){
this.animalType = type;
}
getAnimalType(){
console.log('this.animalType: ', this.animalType );
}
}
let cat = new Animal('cat');
//by instance
document.getElementById('1').innerHTML = Object.getOwnPropertyNames(cat);
//by getting prototype from instance
document.getElementById('2').innerHTML = Object.getOwnPropertyNames(Object.getPrototypeOf(cat));
//by prototype
document.getElementById('3').innerHTML = Object.getOwnPropertyNames(Animal.prototype);
Я обычно использую
if __FILE__ == $0
x = SweetClass.new(ARGV)
x.run # or go, or whatever
end
Таким образом да, Вы можете. Это просто зависит от того, что Вы делаете.
Мое персональное эмпирическое правило: момент
if __FILE__ == $0
<some code>
end
получает дольше, чем 5 строк, я извлекаю его к main
функция. Это сохраняется и для Python и для кода Ruby. Без того кода просто выглядит плохо структурированным.
Я всегда считал $ PROGRAM_NAME
более читабельным, чем использование $ 0
. Половину времени, когда я вижу такие "Perl-подобные" глобалы, мне приходится искать их.
if __FILE__ == $PROGRAM_NAME
# Put "main" code here
end
Нет.
, Почему добавляют дополнительный слой сложности ни для какой реальной выгоды? Нет никакой конвенции для Rubyists, который использует его.
я ожидал бы до второго раза необходимо использовать его (который будет, вероятно, происходить менее часто, чем Вы думаете), и затем осуществите рефакторинг его так, чтобы это было допускающим повторное использование, который, вероятно, включит конструкцию как вышеупомянутое.