天天看点

JavaScript对象继承的方法

    写这个话题单纯是给自己做笔记了,不然老忘记。

    第一种方法:

<code>    </code><code>function</code> <code>fn1(x) {</code>

<code>        </code><code>this</code><code>.x = x;</code>

<code>    </code><code>}</code>

<code>    </code><code>function</code> <code>fn2(x, y) {</code>

<code>        </code><code>this</code><code>.tmpObj = fn1;</code>

<code>        </code><code>this</code><code>.tmpObj(x);</code>

<code>        </code><code>delete</code> <code>this</code><code>.tmpObj;</code>

<code>        </code><code>this</code><code>.y = y;</code>

    第二种方法:call()或apply()

<code>        </code><code>fn1.call(</code><code>this</code><code>, x);</code>

    第三种方法:原型链继承

<code>    </code><code>fn1.prototype.y = </code><code>function</code><code>() {</code>

<code>        </code><code>console.log(</code><code>"i am pomelo"</code><code>);</code>

<code>    </code><code>function</code> <code>fn2() {}</code>

<code>    </code><code>fn2.prototype = </code><code>new</code> <code>fn1();</code>

<code>    </code><code>fn2.prototype.constructor = fn2;</code>

<code>    </code><code>var</code> <code>fn2Obj = </code><code>new</code> <code>fn2();</code>

<code>    </code><code>fn2Obj.y();</code>

    实际用得最多的是第二种和第三种。

<code>    </code><code>fn1.prototype.z = </code><code>function</code><code>() {</code>

<code>        </code><code>fn1.apply(</code><code>this</code><code>, [x]);</code>

<code>    </code><code>var</code> <code>fn2Obj = </code><code>new</code> <code>fn2(1024, 2048);</code>

<code>    </code><code>console.log(fn2Obj.x);</code>

<code>    </code><code>console.log(fn2Obj.y);</code>

<code>    </code><code>fn2Obj.z();</code>

<code></code>

本文转自 iampomelo 51CTO博客,原文链接:http://blog.51cto.com/iampomelo/1677585,如需转载请自行联系原作者

下一篇: python升级

继续阅读