首页 > 代码库 > javascript --- 原型继承与属性拷贝的综合应用
javascript --- 原型继承与属性拷贝的综合应用
对于继承来说,主要目标就是将一些现有的功能据为己有。也就是说,我们在新建一个对象的时候,通常首先继承现有对象,然后再为其添加额外的属性和方法。
对此,我们可以通过一个函数调用来完成。
具体而言就是:
1. 使用原型继承的方式,将一个已有对象设置成新对象的原型。
2. 新建一个对象后,将另一个已有对象的属性拷贝过来。
function objectPlus(o, stuff){ var n; function F(){}; F.prototype = o.prototype; n = new F(); n.uber = o; for(var i in stuff){ n[i] = stuff[i]; } return n;}
这个函数接收两个参数o, stuff; 对象o用于继承,对象stuff用来拷贝方法和属性。我们来看一下实际应用:
首先,需要一个基本对象shape:
var pepole = { name: ‘Anna‘, toString: function(){ return this.name; }}
接着,创建一个继承于shape的对象,并为其添加额外的属性与方法。这些属性与方法与一个文本标识法创建的匿名对象提供:
var her = objectPlus(pepole,{ name: ‘Jock‘, toString:function(){ return this.usber.toString() + ‘,‘ +this.name; }})
接下来,我们继续来创建一个继承her对象的his对象,也为其添加一些属性和方法:
var his = ObjectPlus(her, { name: ‘lus‘, getArea: function(){ return this.side * this.height / 2; }, side: 0, height: 0 })
下面我们来测试一下:
var my = objectPublic(her, { side:4, height:4})
my.getArea(); // 8
my.toString(); // Anna, Jock, Lus, Lus
这里的不同之处在于,执行toString()函数时,his的name属性会被执行两次,这是因为我们在实例化my的时候继承与her的,her自己又有name属性,所以这里又多了一层继承关系。
我们也可以给该实例一个新的name属性:
objectPuls(her, { side: 4, height: 4, name: ‘jiao‘}).toString();// Anna, Jock, Lus, jiao
对不住了,这两天有点懒,玩了个游戏,怀怀旧,来个A哥镇楼:╮(╯▽╰)╭╮(╯▽╰)╭╮(╯▽╰)╭
javascript --- 原型继承与属性拷贝的综合应用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。