JavaScriptでの継承
ECMAScript 5からObject.createというメソッドが追加されてインスタンスからの継承が書きやすくなったようだ。
参考: ECMAScript 5 Part 1: Reusable Code – IEBlog – Site Home – MSDN Blogs
ES5以前はクラスを定義するためにコンストラクタをつくっておいて、そのprototypeスロットに継承元のオブジェクトをセットしてからnew演算子を適用していた。
var appointment = {
name: "unnamed appointment",
startTime: new Date(NaN),
endTime: new Date(NaN),
location: "unknown"
};
function Appointment(){};
Appointment.prototype = appointment;
var myAppointment = new Appointment();
ES5で追加されたObject.createを使うと、上記最後の3行と同じ意味となる。
var myAppointment = Object.create(appointment);
Prototypal Inheritanceを言語仕様で取り込んだと言うことだね。
Object.createとnewの関係は「Yet Another…: JavaScriptのオブジェクト指向は、逆の順番で学んだほうが理解しやすいと思うので…」がわかりやすかった。
最近のコメント