天天看點

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更新

繼續閱讀