1. function Person(name){
  2. this.name = name;
  3. };
  4. function Mother(){
  5.  
  6. };
  7. //给mother提供公有的属性
  8. Mother.prototype = {
  9. age:18,
  10. home:['Beijing','Shanghai']
  11. }
  12. //Person的属性 指向Mother的原型
  13. Person.prototype = new Mother();
  14. //实例化
  15. var p1 = new Person('jack');//通过p1.__proto__ 可以查到p1和p2的原型是一样的。age:18 home:Beijing Shanghai
  16. var p2 = new Person('viven');
  17. p1.age = 118;
  18. console.log(p1.age); //
  19. console.log(p2.age);//
  20. //通过__proto__查看到p1的原型还是没变,但是p1多了一个age属性 值为118,也就是说实例不能改变原型的属性
  21. p1.home[0] = 'Shenzhen';
  22. console.log(p1.home);// Shenzhen Shanghai
  23. console.log(p2.home);// Shenzhen Shanghai 因为原型中的引用类型的值是共享的,可以改变
  24. //同样可以和上面一样,改变原型的属性
  25. p1.home =['guangzhou','hangzhou'];
  26. console.log(p1.home);
  27. console.log(p2.home); //改变不了,只是给p1添加了一个home的属性
  28. //可以通过delete 来删除实例的属性
  29. delete p1.age;
  30. console.log(p1.age); //
  31. //改写原型
  32. Person.prototype.name = 'kevin';
  33. delete p1.name;
  34. console.log(p1.name);//kevin 给Person的原型添加了一个name 属性,但是会被实例p1的name 覆盖
  35. //重写原型
  36. Person.prototype = {
  37. age: 28,
  38. address: { country: 'USA', city: 'Washington' }
  39. };
  40. var p3 = new Person('Obama');//原型重写后和Mother没有一点关系了。。
  41. //改写Mother原型
  42. Mother.prototype.no = 9527; //p1 p2有联系,但是p3没有关系
  43. //重写Mother原型
  44. //外婆赚钱了,买了2辆车,谁有一份呢?
  45. Mother.prototype = {
  46. car:2,
  47. carname:['benchi','baoma']
  48. }
  49. var p4 = new Person('join'); //谁都没有份,因为Person和Mother已经断绝关系了。。。
  50. //为了车和你外婆和好
  51. Person.prototype =new Mother();
  52. var p5 = new Person('lala');//你外婆不认你们,只认这个外甥女

js原型链。。fuck的更多相关文章

  1. JS原型链

    JS作为发展了多年了对象语言,支持继承,和完全面向对象语言不同的是,JS依赖原型链来实现对象的继承. 首先JS的对象分两大类,函数对象和普通对象,每个对象均内置__proto__属性,在不人为赋值__ ...

  2. 深入分析JS原型链以及为什么不能在原型链上使用对象

    在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype:如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕 ...

  3. js原型链与继承(初体验)

    js原型链与继承是js中的重点,所以我们通过以下三个例子来进行详细的讲解. 首先定义一个对象obj,该对象的原型为obj._proto_,我们可以用ES5中的getPrototypeOf这一方法来查询 ...

  4. JS 原型链图形详解

    JS原型链 这篇文章是「深入ECMA-262-3」系列的一个概览和摘要.每个部分都包含了对应章节的链接,所以你可以阅读它们以便对其有更深的理解. 对象 ECMAScript做为一个高度抽象的面向对象语 ...

  5. 深入理解JS原型链与继承

    我 觉得阅读精彩的文章是提升自己最快的方法,而且我发现人在不同阶段看待同样的东西都会有不同的收获,有一天你看到一本好书或者好的文章,请记得收藏起来, 隔断时间再去看看,我想应该会有很大的收获.其实今天 ...

  6. js 原型链和继承(转)

    在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的 new 到底是干什么的 1. 什么是 JS 原型链? 我们知道 JS 有对象,比如 var ob ...

  7. 一张图看懂 JS 原型链

    JS 原型链,画了张图,终于理清楚各种关系有木有 写在最后: __proto__是每个对象都有的一个属性,而prototype是函数才会有的属性!!! function Person() { } 是函 ...

  8. 简单粗暴地理解js原型链–js面向对象编程

    简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...

  9. JS原型链与继承别再被问倒了

    原文:详解JS原型链与继承 摘自JavaScript高级程序设计: 继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式: 接口继承 和 实现继承 .接口继承只继承方法签名,而实 ...

  10. 02 js原型链

    1 js原型链是一个绕不开的话题.直接上说吧. /** * 1. js里的原型链是怎么样的? 带class 和不带class的原型链的不同. */ const util = require('util ...

随机推荐

  1. 忘记SYS密码

    进入控制台录入   sqlplus /nolog; connect / as sysdba alter user sys identified by ; alter user system ident ...

  2. 如何使用 Workman 做一个聊天室

    一:首先,得简单说说 thinkphp+workerman 的安装. 安装 thinkphp5.1 composer create-project topthink/think=5.1.x-dev t ...

  3. PyQt5操作SQLite数据库

    1.操作SQLite数据库import sysfrom PyQt5.QtSql import QSqlDatabase,QSqlQueryfrom PyQt5.QtCore import * def ...

  4. 服务器(2)——IIS(2)——IIS Express(1)——IIS跟IIS Express之间的区别和关系

    在早期开发.NET WEB应用的时候,是需要为应用项目配置一个IIS下的虚拟应用(VS会自动配置,也可以手工指定),但这个要求操作系统必须支持IIS并且安装IIS(WINDOWS 7 HOME版本是不 ...

  5. 基于通用二进制方式安装MySQL-5.7.24(比源码安装MySQL快许多)及破密码

    确保系统中有依赖的libaio软件 yum -y install libaio 使用wget命令下载mysql-5.7.24软件包 wget http://mirrors.sohu.com/mysql ...

  6. url转码。

    Javascript 中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,deco ...

  7. 【网摘】监控 div 的内容变化

    数据是动态加载而来,而当无数据时,提示一下暂无数据.而数据是可以动态在当前页面即时添加的,故在无数据时所做提示,需要隐藏,所以找了这个方法.成功在动态添加数据后,暂无数据的提示没有了. if($(&q ...

  8. php 安装 swoole

    1.安装swoole cd /usr/local/src wget https://github.com/swoole/swoole-src/archive/v1.9.1-stable.tar.gz ...

  9. Mysql基本用法-存储引擎-04

    MYSQL中只有 INNODB和BDB 类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!) Mysql基本用法-存储引擎-02中的test_user表 和 phpcvs表 <?php ...

  10. 7 JavaScript函数调用&this关键字&全局对象&函数调用&闭包

    JavaScript函数有4种调用方式,每种方式的不同之处在于this的初始化 一般而言,在JavaScript中,this指向函数执行时的当前对象 如果函数不属于任何对象,那么默认为全局对象,即HT ...