Javascript/javascriptオブジェクト指向
提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 03:10時点における127.0.0.1 (トーク)による版 (ページの作成:「==javascriptオブジェクト指向サンプル== <<nowiki />script type="text/javascript"> <<nowiki />!-- var test = function(name) { this.name = name; this.widt...」)
javascriptオブジェクト指向サンプル
<script type="text/javascript">
<!--
var test = function(name) {
this.name = name;
this.width = new Array();
}
test.prototype = {
call : function() {
alert(this.name + "さん。");
},
hallo : function() {
alert(this.name + "さん。おはよう。");
}
}
var t = new test("satou");
//-->
</script>
<a href="" onClick="t.call();t.hallo();return false;">do</a>
参考
http://builder.japan.zdnet.com/sp/javascript-kickstart-2007/story/0,3800083428,20369263,00.htm?ref=rss
オブジェクト継承
function Animal(){
}
Animal.prototype.name = function(){
return 'animal';
};
Animal.prototype.foot = function(){
return 'foot undefined';
};
var animal = new Animal();
console.log(animal.name()); // animal
function Cat(){
}
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;
Cat.prototype.name = function(){
return 'cat';
};
Cat.prototype.foot = function(){
return 4;
};
Cat.prototype.all = function(){
return this.name() + this.foot(); // 内部メソッド
};
var cat = new Cat();
console.log(cat.name()); // cat
console.log(cat.foot()); // 4
console.log(cat.all()); //cat4
オブジェクト継承でextendを使う
function Animal(){
}
Animal.prototype.name = function(){
return 'animal';
};
Animal.prototype.foot = function(){
return 'foot undefined';
};
var animal = new Animal();
console.log(animal.name()); // animal
/**
* extend function
* @param {Object} s superclass
* @param {Function} c constructor
*/
function extend(s, c)
{
function f(){};
f.prototype = s.prototype;
c.prototype = new f();
c.prototype.__super__ = s.prototype;
c.prototype.__super__.constructor = s;
c.prototype.constructor = c;
return c;
};
function Cat(){
}
Cat = extend(Animal, function()
{
// this.__super__.constructor();
});
Cat.prototype.name = function()
{
// console.log(this.__super__.name());
return 'cat';
}
var cat = new Cat();
console.log(cat.name());
注意:extendが他と被る恐れあり
