2019年4月9日 星期二

[Back To Basic] Javascript - Object Prototypes

所有的物件(Objects),都繼承了 prototype 的屬性(properties)和方法(methods)。
  • Date 繼承 Date.prototype
  • Array 繼承 Array.prototype
  • Person 繼承 Person.prototype
  • 繼承鏈的最頂端是 Object.prototype

在 prototype 增加屬性(properties)或方法(methods),會影響到所有已經存在的物件(objects)

function User(name, age, phone) {
    this.name = name;
    this.age = age;
    this.phone = phone;
}

var me = new User('Shawn', 18, '0900123456');
var coworker = new User('Koji', 20, '0911321321');

// 所有使用者增加國籍的屬性
User.prototype.nationality = 'Taiwan';

// 所有使用者增加取得出生年份的方法
User.prototype.birthYear = function () {
    var year = new Date().getFullYear();
    return year - this.age;
}

me.nationality; // Taiwan
coworker.nationality; // Taiwan
me.birthYear();
coworker.birthYear();

不要修改 javascript 標準物件的 prototype

沒有留言:

張貼留言