بررسی پروتوتایپ (Prototype) در جاوااسکریپت

وقتی آبجکت‌ها توی جاوااسکریپت به وجود میان، یک سری پراپرتی‌ها و متدها رو از یک آبجکت به اسم prototype به ارث می‌برن. آبجکت ‌prototype مثل یک طرح و الگو هست برای بقیه آبجکت‌ها.

برای مثال همه رشته‌ها چند متد پیش‌فرض مثل ()split() ،replace و یک پراپرتی به اسم length دارن. وجود این پراپرتی‌ها و متدها به این دلیل هست که هنگام ساخته شدن یک رشته، متدها و پراپرتی‌ها از آبجکت String.prototype به ارث برده میشن. بنابراین اگه ما آبجکت String.prototype رو ویرایش کنیم و یا به اون متد و پراپرتی اضافه کنیم، این متدها و پراپرتی‌ها توی همه‌ی رشته‌های دیگه وجود خواهد داشت.

توی کد زیر من یک متد به prototype آبجکت String اضافه کردم به اسم limit. این متد توی همه‌ی رشته‌ها وجود خواهد داشت:

String.prototype.limit = function (length) {
  return this.length > length ? this.substring(0, length) + &quot...&quot : this;
}

و به صورت زیر ازش استفاده می‌کنیم:

var str = &quotJavaScript is often described as a prototype-based language"

console.log(str.limit(20)); // JavaScript is often ...


منبع:

https://www.w3schools.com/js/js_object_prototypes.asp

https://www.geeksforgeeks.org/prototype-in-javascript/

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes

https://stackoverflow.com/questions/7463658/how-to-trim-a-string-to-n-chars-in-javascript

https://dev.to/macmacky/70-javascript-interview-questions-5gfi