码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-09-01 01:58:58      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

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

正如上文所说,如果所有的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;  // true
my._proto_.constructor === child;  // true
my._proto_._proto_ === his.prototype; // true
my._proto_._proto_._proto_.constructor === her;  // true

 

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

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

标签:

原文地址:http://www.cnblogs.com/beyond-succeed/p/5828008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!