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

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

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

  1. function her(){};
  2. her.prototype.name = 'Anna';
  3. her.prototype.toString = function(){
  4. return this.name;
  5. }
  6. function his(){};
  7. var F = function(){};
  8. F.prototype = her.prototype;
  9. his.prototype = new F();
  10. his.prototype.constructor = his;
  11. his.prototype.name = 'Jock';
  12. his.prototype.sex = 'men';
  13. function child(width, height){
  14. this.width = width;
  15. this.hieght = height;
  16. }
  17. var F = function(){}
  18. F.prototype = his.prototype;
  19. child.prototype = new F();
  20. child.prototype.constructor = child;
  21. child.prototype.name = 'Alen';

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

  1. my._proto_ === child.prototype; // true
  2. my._proto_.constructor === child; // true
  3. my._proto_._proto_ === his.prototype; // true
  4. my._proto_._proto_._proto_.constructor === her; // true

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

javascript --- 临时构造器F()的更多相关文章

  1. 24 JavaScript对象访问器&JavaScript对象构造器

    ES5引入了Getter和Setter Getter和Setter允许定义对象访问器 JavaScript Getter(get关键字):获取对象属性 <script> var perso ...

  2. javascript中构造器(函数)的__proto__与prototype初探

    背景:最近没什么需求,快要闲出屁了,所以重温了一下js的原型,结果大有收获,且偶然看到Snandy大神的<JavaScript中__proto__与prototype的关系> 这篇文章,感 ...

  3. JavaScript的构造器与对象(二)

    constructor 的用法:对象的构造函数  每一个函数的Prototype属性指向的对象都包含唯一一个不可枚举属性constructor,该属性的值是这么一个对象:它指向了它所在的构造函数. 语 ...

  4. javascript 中继承实现方式归纳

    转载自:http://sentsin.com/web/1109.html 不同于基于类的编程语言,如 C++ 和 Java,javascript 中的继承方式是基于原型的.同时由于 javascrip ...

  5. 总结javascript继承的两种方式的N中写法

    最近翻看博客园,总结了一下javascript的继承方式:prototype和copy继承方式. 一.prototype方式 当一个函数被创建时,Function构造函数产生的函数会隐式的被赋予一个p ...

  6. JavaScript中的constructor和继承

    概述 这是我在看JavaScript面向对象编程指南的时候,对constructor和继承的总结. 关于它们的详细知识,可以上网查到,所以我只写那些网上没有的. 内容 constructor的理解 c ...

  7. javascript的面向对象思想知识要点

    获取数据类型 typeof undefined:访问某个不存在的或未经赋值的变量时就会得到一个 undefined,用typeof 获取类型,得到的也是undefined;null:它不能通过java ...

  8. 《面向对象的JavaScript》读书笔记

    发现了2004年出版的一本好书,用两天快速刷了一遍,草草整理了一下笔记,在此备忘. 类:对象的设计蓝图或制作配方. 对象 === 实例 :老鹰是鸟类的一个实例 基于相同的类创建出许多不同的对象,类更多 ...

  9. javascript --- 继承小结

    回顾之前学到的知识,大体上可以分为两类: 1. 基于构造器工作的模式. 2. 基于对象的工作模式. 3. 是否使用原型 4. 是否执行属性拷贝. 5. 两者都有(执行原型属性拷贝) 下面我们把之前的知 ...

随机推荐

  1. OpenSSL version mismatch. Built against 1000105f, you have 10001060

    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=732940 http://ftp.debian.org/debian/pool/main/o/ope ...

  2. 创建dll及使用

    一.创建动态链接库文件 ** 1.打开VS2013,选择文件,新建工程  2.选择新建W32控制台应用程序,这里将工程名改为makeDLL  3.在应用程序类型中选择DLL,点击完成  4.完成以上步 ...

  3. java中,为什么char类型数组可以直接用数组名打印,打印结果居然不是地址值!

    char类型的数组就相当于一个字符串. 因为输出流System.out是PrintStream对象,PrintStream有多个重载的println方法,其中一个就是public void print ...

  4. python-高级编程-07-端口

    TCP和UDP协议中都有端口这个概念,但是端口却不是IP协议的一部分 端口的出现主要是为了给协议栈和应用对应 .协议栈端口号将数据分配给不同的应用程序 .应用层程序用端口号去区分不同的链接 TCP 和 ...

  5. python学习-- Django model -class 主键自增问题

    转自:http://blog.csdn.net/mapoor/article/details/8609660 prize_id = models.IntegerField(primary_key=Tr ...

  6. 优秀的缓存请求库,快速请求接口和图片:WTRequestCenter

    WTRequestCenter 方便缓存的请求库无需任何import和配置,目前实现了基础需求如果有其他需要请在issue 上提出,谢谢! 使用方法 Usage 注意:所有的请求都是缓存的 GET 请 ...

  7. April Fools Contest 2018

    这个比赛不正经,但是我可以一本正经的写代码啊 A. Quirky Quantifiers time limit per test 2 seconds memory limit per test 64 ...

  8. 九度oj 题目1380:lucky number

    题目描述: 每个人有自己的lucky number,小A也一样.不过他的lucky number定义不一样.他认为一个序列中某些数出现的次数为n的话,都是他的lucky number.但是,现在这个序 ...

  9. python学习笔记--python编程基础

    一.一个隆重的仪式 我们在学习语言的时候,第一个写的程序肯定都是hello world.来写第一个程序吧,其实很简单,python的语法就是简单.优雅,一个print就搞定. 1 print('hel ...

  10. [LOJ#2255][BZOJ5017][Snoi2017]炸弹

    [LOJ#2255][BZOJ5017][Snoi2017]炸弹 试题描述 在一条直线上有 N 个炸弹,每个炸弹的坐标是 Xi,爆炸半径是 Ri,当一个炸弹爆炸时,如果另一个炸弹所在位置 Xj 满足: ...