JS原型链问题

先上代码

function Person(name) {
        this.weight = 7;
        this.height = 14;
        this.skin = "yellow";
        this.gender = "";
        this.name = name;
        this.age = 0;
    }
    Person.prototype.eat = function () {
        console.log("吃吃");
    };
    Person.prototype.cry = function () {
        console.log("哭哭");
    };
    var person1 = new Person;
    function pe() {

    }
    pe.prototype.txt=function(){
        console.log("a");
    }
    pe.prototype = new Person;
    var tom = new pe;
    pe.prototype.writeCss = function () {
        console.log("我会")
    };
    pe.prototype.writeJs = function () {
        console.log("JS");
    };

咱们先分析下代码
首先我们构造了一个Person的构造函数,并在Person的共享中,即Person.prototype中加入了两个属性即 eat和cry
此时图形是这样的

并且 我们创建了一个person1的实例 图就变为
新创建一个实例
然后 我们又创建了一个构造函数pe,并让其pe.prototype=new Person
图形则变为
这里写图片描述

然后再Pe下创建了一个tom的实例,再到 pe.prototype这个共享内再创建两个方法即 writeCss跟writeJs
图形则变为
这里写图片描述
这样我们就完成了 原型的继承

如果我们将代码改为这样

//    pe.prototype = new Person;

    pe.prototype.__proto__=Person.prototype;

图就要改为这样
这里写图片描述
原来pe.prototype中继承的Person私有的一些方法就没有了

若将代码改成这样

//    pe.prototype = new Person;
    pe.prototype=Person.prototype;
//    pe.prototype.__proto__=Person.prototyp

图形这要变成这样
这里写图片描述
此时pe跟person就共享了同一个prototype

以上是个人学习的一点心得,欢迎指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值