JavaScript のオブジェクトについての基本です。
オブジェクト – Objectの生成
var obj = {propertyName: value, propertyName: value, … };
var obj = new Object();
var obj = Object();
var obj = Object.create(Object.prototype);
var obj = Object.create({});
関数でObject生成ES5
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.say = function(msg) {
console.log(this.name + ‘ say:’ + msg);
}
実行:
var per1 = new Person(‘test1’, 20);
per1.say(‘test msg’);
②無名関数で定義する方法:
var per1 = new function() {
this.name = ”;
this.age = 0;
}
per1.say = function(msg) {
console.log(this.name + ‘ say:’ + msg)
}
per1.init = function(name, age) {
this.name = name;
this.age = age;
}
実行:
per1.init(‘test1’, 23);
per1.say(‘test msg’);
クラスでObject生成ES6
constructor(name, age) {
this.name = name;
this.age = age;
}
say(msg) {
console.log(this.name + ‘ say:’ + msg);
}
static run() {
console.log(‘run ….’);
}
}
var per1 = new Person(‘test1’, 20);
per1.say(‘test msg’);
Person.run();
継承ES5
function Person() {
this.name = ‘Person’;
}
Person.prototype.say = function(msg) {
console.log(this.name + ‘ say:’ + msg);
}
function Player() {
}
Player.prototype = new Person();
Player.prototype.constructor = Player;
var play1 = new Player();
console.log(play1.name);
play1.say(‘test msg’);
//方法②
function Person() {
this.name = ‘Person’;
}
Person.prototype.say = function(msg) {
console.log(this.name + ‘ say:’ + msg);
}
function Player() {
Person.call(this);
//Person.apply(this);
//Persion.bind(this)();
}
var play1 = new Player();
console.log(play1.name);
//play1.say(‘test msg’); // error
function Person(name, age) {
this.name = name;
this.age = age;
}
var pers1 = new Person(‘test1’, 23);
var player = Object.create(pers1);
console.log(player.name);
継承ES6
constructor(name, age) {
this.name = name;
this.age = age;
}
say(msg) {
console.log(this.name + ‘ Person say:’ + msg);
}
}
class Player extends Person {
constructor(name, age) {
super(name, age);
this.name = name;
this.age = age;
}
say(msg) {
super.say(msg);
console.log(this.name + ‘ Player say:’ + msg);
}
}
var play1 = new Player(‘test1’, 32);
play1.say(‘test msg’);