写这个话题单纯是给自己做笔记了,不然老忘记。
第一种方法:
<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,如需转载请自行联系原作者