JavaScript面向对象编程-快速构建继承关系之对象拷

页面导航:首页 > 网络编程 > JavaScript > JavaScript面向对象编程-快速构建继承关系之对象拷

JavaScript面向对象编程-快速构建继承关系之对象拷

来源: 作者: 时间:2016-02-04 09:15 【

前面的例子我们是通过构造器创建对象,并且希望该对象继承来自另外一个构造器的对象我们也可以直接面向一个对象来达成继承的目的,使用下属步骤: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;
}



Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<