js面接問題------対象クラス向け
8374 ワード
コードは次のとおりです.
転載先:https://www.cnblogs.com/diasa-fly/p/7510473.html
<span style="color:#008000;">/*</span><span style="color:#008000;">*
*
</span><span style="color:#008000;">*/</span>
<span style="color:#0000ff;">var</span> Animal = <span style="color:#0000ff;">function</span><span style="color:#000000;"> () {
</span><span style="color:#0000ff;">this</span>.name = 'Animal'<span style="color:#000000;">;
};
</span><span style="color:#008000;">/*</span><span style="color:#008000;">*
* es6 class
</span><span style="color:#008000;">*/</span><span style="color:#000000;">
class Animal2 {
constructor () {
</span><span style="color:#0000ff;">this</span>.name = 'Animal2'<span style="color:#000000;">;
}
}
</span><span style="color:#008000;">/*</span><span style="color:#008000;">*
*
</span><span style="color:#008000;">*/</span><span style="color:#000000;">
console.log(</span><span style="color:#0000ff;">new</span> Animal(), <span style="color:#0000ff;">new</span><span style="color:#000000;"> Animal2());
</span><span style="color:#008000;">/*</span><span style="color:#008000;">*
*
</span><span style="color:#008000;">*/</span>
<span style="color:#0000ff;">function</span><span style="color:#000000;"> Parent1 () {
</span><span style="color:#0000ff;">this</span>.name = 'parent1'<span style="color:#000000;">;
}
Parent1.prototype.say </span>= <span style="color:#0000ff;">function</span><span style="color:#000000;"> () {
};
</span><span style="color:#0000ff;">function</span><span style="color:#000000;"> Child1 () {
Parent1.call(</span><span style="color:#0000ff;">this</span><span style="color:#000000;">);
</span><span style="color:#0000ff;">this</span>.type = 'child1'<span style="color:#000000;">;
}
console.log(</span><span style="color:#0000ff;">new</span> Child1(), <span style="color:#0000ff;">new</span><span style="color:#000000;"> Child1().say());
</span><span style="color:#008000;">/*</span><span style="color:#008000;">*
*
</span><span style="color:#008000;">*/</span>
<span style="color:#0000ff;">function</span><span style="color:#000000;"> Parent2 () {
</span><span style="color:#0000ff;">this</span>.name = 'parent2'<span style="color:#000000;">;
</span><span style="color:#0000ff;">this</span>.play = [1, 2, 3<span style="color:#000000;">];
}
</span><span style="color:#0000ff;">function</span><span style="color:#000000;"> Child2 () {
</span><span style="color:#0000ff;">this</span>.type = 'child2'<span style="color:#000000;">;
}
Child2.prototype </span>= <span style="color:#0000ff;">new</span><span style="color:#000000;"> Parent2();
</span><span style="color:#0000ff;">var</span> s1 = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Child2();
</span><span style="color:#0000ff;">var</span> s2 = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Child2();
console.log(s1.play, s2.play);
s1.play.push(</span>4<span style="color:#000000;">);
</span><span style="color:#008000;">/*</span><span style="color:#008000;">*
*
</span><span style="color:#008000;">*/</span>
<span style="color:#0000ff;">function</span><span style="color:#000000;"> Parent3 () {
</span><span style="color:#0000ff;">this</span>.name = 'parent3'<span style="color:#000000;">;
</span><span style="color:#0000ff;">this</span>.play = [1, 2, 3<span style="color:#000000;">];
}
</span><span style="color:#0000ff;">function</span><span style="color:#000000;"> Child3 () {
Parent3.call(</span><span style="color:#0000ff;">this</span><span style="color:#000000;">);
</span><span style="color:#0000ff;">this</span>.type = 'child3'<span style="color:#000000;">;
}
Child3.prototype </span>= <span style="color:#0000ff;">new</span><span style="color:#000000;"> Parent3();
</span><span style="color:#0000ff;">var</span> s3 = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Child3();
</span><span style="color:#0000ff;">var</span> s4 = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Child3();
s3.play.push(</span>4<span style="color:#000000;">);
console.log(s3.play, s4.play);
</span><span style="color:#008000;">/*</span><span style="color:#008000;">*
* 1
* @type {String}
</span><span style="color:#008000;">*/</span>
<span style="color:#0000ff;">function</span><span style="color:#000000;"> Parent4 () {
</span><span style="color:#0000ff;">this</span>.name = 'parent4'<span style="color:#000000;">;
</span><span style="color:#0000ff;">this</span>.play = [1, 2, 3<span style="color:#000000;">];
}
</span><span style="color:#0000ff;">function</span><span style="color:#000000;"> Child4 () {
Parent4.call(</span><span style="color:#0000ff;">this</span><span style="color:#000000;">);
</span><span style="color:#0000ff;">this</span>.type = 'child4'<span style="color:#000000;">;
}
Child4.prototype </span>=<span style="color:#000000;"> Parent4.prototype;
</span><span style="color:#0000ff;">var</span> s5 = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Child4();
</span><span style="color:#0000ff;">var</span> s6 = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Child4();
console.log(s5, s6);
console.log(s5 </span><span style="color:#0000ff;">instanceof</span> Child4, s5 <span style="color:#0000ff;">instanceof</span><span style="color:#000000;"> Parent4);
console.log(s5.constructor);
</span><span style="color:#008000;">/*</span><span style="color:#008000;">*
* 2
</span><span style="color:#008000;">*/</span>
<span style="color:#0000ff;">function</span><span style="color:#000000;"> Parent5 () {
</span><span style="color:#0000ff;">this</span>.name = 'parent5'<span style="color:#000000;">;
</span><span style="color:#0000ff;">this</span>.play = [1, 2, 3<span style="color:#000000;">];
}
</span><span style="color:#0000ff;">function</span><span style="color:#000000;"> Child5 () {
Parent5.call(</span><span style="color:#0000ff;">this</span><span style="color:#000000;">);
</span><span style="color:#0000ff;">this</span>.type = 'child5'<span style="color:#000000;">;
}
Child5.prototype </span>=<span style="color:#000000;"> Object.create(Parent5.prototype);
</span>
転載先:https://www.cnblogs.com/diasa-fly/p/7510473.html