JavaScript面向对象编程(10)快速构建继承关系之对象拷贝
2014-12-23 22:54
561 查看
前面的例子我们是通过构造器创建对象,并且希望该对象继承来自另外一个构造器的对象
我们也可以直接面向一个对象来达成继承的目的,使用下属步骤:
1、拷贝一个对象
2、给新对象添加属性
使用起来也比较简单:
至于要深度拷贝,可使用下面的函数
我们也可以直接面向一个对象来达成继承的目的,使用下属步骤:
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; }
相关文章推荐
- JavaScript面向对象编程(10)高速构建继承关系之对象拷贝
- JavaScript面向对象编程(9)快速构建继承关系之整合原型链
- JavaScript面向对象编程(9)高速构建继承关系之整合原型链
- Javascript面向对象编程(三):非函数对象的继承
- Javascript继承(上)――对象构建介绍
- Javascript面向对象编程(三):非函数对象的继承
- Javascript继承(上)――对象构建介绍
- JavaScript中的对象继承关系
- javascript内置对象及其继承关系
- javascript面向对象编程的学习---对象继承
- Javascript继承(上)——对象构建
- JavaScript对象原型继承关系图
- javascript对象构建、继承
- [转]Javascript面向对象编程(三):非函数对象的继承
- javascript面向对象编程的学习---对象继承
- Javascript面向对象编程——对象继承的写法
- javascript对象---10 继承
- 在JavaScript面向对象编程中使用继承(5)
- javascript对象的property和prototype是这样一种关系
- javascript 中对象的继承〔转贴〕