JavaScriptオブジェクト向けの3つの特徴
2405 ワード
概要
もともとデザインモードを書くつもりだったのですが、jsのデザインモードについて話す前にjsのオブジェクト向けについてお話ししますが、多くのデザインモードの実現にはオブジェクト向けの思想が混ざっているので、まず前期の敷き詰めをしておきます.
jsは動的タイプのスクリプト型言語であり、変数タイプが保証されないことを知っているので、もともとこの方法を持つように設計されているかどうかを考慮することなく、任意のオブジェクトを呼び出す任意の方法を試してみることができます.
対象とは何か本稿では論じない.次に,jsにおけるオブジェクト向けの3つの特徴の実現について述べる.
パッヶージ
。 ,
。 ,
/**
- 。
- @type {{getName, setName}}
*/
var obj=(function () {
var _name="gcy";
return {
getName:function () {
return _name;
},
setName:function (val) {
_name=val;
}
};
})();
obj._name; //undefined
obj.getName(); //gcy
継承
javaなどの静的言語に継承されるキーワードは、es 6にもextendやclassがあるが、その本質はプロトタイプメカニズムに基づいている.
/**
* es5
* @constructor
*/
var A=function () {
}
A.prototype={name:"gcy"};
var B=function () {
};
B.prototype=new A();
var b=new B();
console.log(b.name);
/**
* e6 demo
*/
class People{
constructor(name){
this.name=name;
}
getName(){
return this.name;
}
}
class Black extends People{
constructor(name){
super(name);
}
speak(){
return " i am black";
}
}
var peo=new Black("gcy");
console.log(peo.getName()+' says '+peo.speak());
実は原型継承方式は書き方が多い.プロトタイプチェーンメカニズムを理解することが重要だと思います.肝心なのはprototypeと__を理解することです.proto__.
マルチステート
多態は実はやった内容を誰と分けるのか.Javaでは、インタフェース向けのプログラミングを向上させることができます.jsは動的言語なので、多態性自体があります.次の例では、1つの動物が鳴き声を実現できるかどうかは、makeSoundに依存し、あるタイプのオブジェクトには適用されません.
/**
*
* @param animal
*/
var makeSound=function (animal) {
animal.sound();
}
var Duck=function () {
}
var Dog=function () {
}
Duck.prototype.sound=function () {
console.log(" ")
}
Dog.prototype.sound=function () {
console.log(" ")
}
makeSound(new Duck());
makeSound(new Dog());