JavaScript物件導向編程(10)快速構建繼承關係之對象拷貝,javascript物件導向

來源:互聯網
上載者:User

JavaScript物件導向編程(10)快速構建繼承關係之對象拷貝,javascript物件導向
前面的例子我們是通過構造器建立對象,並且希望該對象繼承來自另外一個構造器的對象我們也可以直接面向一個對象來達成繼承的目的,使用下屬步驟:1、拷貝一個對象2、給新對象添加屬性

/** * 通過拷貝繼承對象的屬性和行為 * @param {Object} p 父物件 */function extendCopy(p) {var c = {};for (var i in p) {c[i] = p[i];}c.uber = p;return c;}

使用起來也比較簡單:
var shape = {name: 'shape',toString: function() {return this.name;}}var twoDee = extendCopy(shape);twoDee.name = '2D shape';twoDee.toString = function(){return this.uber.toString() + ', ' + this.name;};var triangle = extendCopy(twoDee);triangle.name = 'Triangle';triangle.getArea = function(){return this.side * this.height / 2;}//使用繼承而來的toString方法alert(triangle.toString());

至於要深度拷貝,可使用下面的函數
/** * 深度拷貝 * @param {Object} p  父物件 * @param {Object} c  子物件 */function deepCopy(p, c) {var c = c || {};for (var i in p) {if (typeof p[i] === 'object') {c[i] = (p[i].constructor === Array) ? [] : {};deepCopy(p[i], c[i]);} else {c[i] = p[i];}}return c;}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.