У меня есть эти два примера функций на строки, которые делают точно то же самое:В чем разница между унаследованным методом (прототипом) и статическим методом (выражение)?
//ex1 - inherited method
String.prototype.slugLower = function() {
return this.split(' ').join('-').toLowerCase();
}
"hello World".slugLower();
//ex2 - static method
String.slugLower = function(str) {
return str.split(' ').join('-').toLowerCase();
}
String.slugLower("hello World");
И вернутся "hello-world"
. В чем разница между ними? Я имею в виду производительность/лучшие практики.
Thanks
Мне нравится сравнение с 'static' и' inherited' в языках на основе классов. Аналогия немного ломается, потому что экземпляр «inherited» разделяется всеми экземплярами объекта. Но все-таки хорошая параллель. –