了解这一章之前,先把我们之前讲到的以构造函数创建对象为前提的继承抛到一边。
首先,我们先用一个var o = {}创建一个没有任何属性的空对象作为我们的‘画板’,然互在逐步向这个画板里添加属性,和方法,但这次我们不用this,而是直接将现有的对象属性全部拷贝过来。
如下面一个函数,我们传入一个对象,并返回她的一个副本。
function extendCopy(parent){ var child = {}; for(var i in parent){ child[i] = parent[i]; } child.usber = parent; return child; }
单纯的属性拷贝是一种非常简单的模式,使用范围非常之广。看一下她的实际应用。
首先我们需要一个基本对象:
var her = { name : ‘Anna‘, sex : ‘women‘, toString : function(){ return this.name; } }
我们只需调用上面的方法,就能返回一个新对象了,我们接着进行扩展:
var his = extendCopy(her); his.name = ‘Jock‘; his.toString = function(){ return this.usber.toString() + ‘,‘ + this.name; }
我们在创建一个对象,接着上述的步骤:
var ha = extendCopy(his); ha.name = ‘Los‘; ha.getArea = function(){ return this.side * this.height / 2; }
接着我们来看:
ha.side = 5; ha.height = 10; console.log(ha.getArea()); //25 console.log(ha.toString()); // Anna Jock los
这就是简单的属性拷贝了。
时间: 2024-10-09 22:05:55