JavaScript的物件與建構子
var a = { x : 1, y : 2, add : function () { return this.x + this.y; }, mul : function () { return this.x * this.y; } }
function A(x, y) { this.x = x; this.y = y; this.add = function () { return this.x + this.y; } this.mul = function () { return this.x * this.y; } }
#
a = new A(1, 2);
JavaScript的prototype
為了能夠講清後面的apply或call函數,這裡先引入prototype。 prototype是只有Function才有的。 要用好繼承,首先要明白為什麼要設計繼承這個東西?無非就是「把公共的部分」提取出來,實現程式碼重複使用。 所以在JavaScript裡,也是把公共部分放在Function的prototype裡。 我們來比較兩個用prototype來實作繼承的例子function A(x, y) { this.x = x; this.y = y; this.add = function () { return this.x + this.y; } this.mul = function () { return this.x * this.y; } } function B(x,y){ } B.prototype=new A(1,2); console.log(new B(3,4).add()); //3
我們再實作一個B繼承A的例子:
function A() { } A.prototype = { x : 1, y : 2, add : function () { return this.x + this.y; }, mul : function () { return this.x * this.y; } } A.prototype.constructor=A; function B(){ } B.prototype=A.prototype; B.prototype.constructor=B;
b=new B();
console.log(b.add()); //3
JavaScript的建構子綁定
在定義完一個A類型的建構函式後,再定義一個B類型,然後在B型別建構函式內部,“嵌入執行”A類型的建構函數。function A(x, y) { this.x = x; this.y = y; this.add = function () { return this.x + this.y; } this.mul = function () { return this.x * this.y; } } function B(x, y, z) { A.apply(this, arguments); this.z = z; } console.log(new B(1,2,3));
function IA(){ this.walk=function(){ console.log("walk"); } } function IB(){ this.run=function(){ console.log("run"); } } function Person(){ IA.apply(this); IB.apply(this); } var p=new Person(); p.walk(); //walk p.run(); //run
以上是JavaScript中困難:prototype與建構子綁定實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!