首页 > 代码库 > javascript --- 临时构造器F()

javascript --- 临时构造器F()

这篇内容也是之前讲到过的,纯属无聊,莫要见怪。~(~ ̄▽ ̄)~~(~ ̄▽ ̄)~~(~ ̄▽ ̄)~~(~ ̄▽ ̄)~~(~ ̄▽ ̄)~

正如上文所说,如果所有的prototype属性都指向了一个相同的对象,父级对象就会受到子级对象的影响,这不是我们想要的一种结果。

要解决这个问题,我们就要给她们找个第三者了,来破坏她们之间这种暧昧的关系,那么我们可以利用一个空函数F(),并将她的原型设置为我们的父级构造函数,然后我们可以new F()来创建不包含父级对象属性的对象,也就是说父级的属性我这里是不能再设置的,同时又可以继承父对象的一切属性了。虽然有点绕,看个小例子理解一下:

function her(){};her.prototype.name = ‘Anna‘;her.prototype.toString = function(){    return this.name;}
function his(){};var F = function(){};F.prototype = her.prototype;his.prototype = new F();his.prototype.constructor = his;his.prototype.name = ‘Jock‘;his.prototype.sex = ‘men‘;
function child(width, height){ this.width = width; this.hieght = height; }var F = function(){}F.prototype = his.prototype;child.prototype = new F();child.prototype.constructor = child;child.prototype.name = ‘Alen‘;

 

通过这种方法,我们就可以保持住原型链,(有时候两个人还是之间还是需要个第三者来调剂一下生活的,不然会不会很无趣?)

my._proto_ === child.prototype;  // truemy._proto_.constructor === child;  // truemy._proto_._proto_ === his.prototype; // truemy._proto_._proto_._proto_.constructor === her;  // true

 

并且父对象的属性不会被子对象的属性所覆盖。

javascript --- 临时构造器F()