原型 - 图1

    1. // 构造函数中的属性和方法我们称为成员, 成员可以添加
    2. function Star(uname, age) {
    3. this.uname = uname;
    4. this.age = age;
    5. this.sing = function() {
    6. console.log('我会唱歌');
    7. }
    8. }
    9. Star.prototype.funDes="探索原型的函数"
    10. var ldh = new Star('刘德华', 18);
    11. console.log(ldh);

    原型 - 图2
    原始类型:booleannullundefinednumberstringsymbol
    非原始类型Boolean、String、Symbol、Number、Object,都是对象,都是由某个构造函数创建出来的。
    比如上面代码,ldh对象本身有this对象,每个对象都有proto这个属性,指向该对象的原型对象,原型对象包含着原型对象上的属性(funDes:"探索原型的函数")与constructor属性,因为ldh对象也是被某个构造函数创建出来的,原型对象中的constructor属性就指向这个构造函数。构造函数又通过 prototype 属性指回原型。

    • Object 是所有对象的爸爸,所有对象都可以通过 __proto__ 找到它
    • Function 是所有函数的爸爸,所有函数都可以通过 __proto__ 找到它
    • 对象的 __proto__ 属性指向原型, __proto__ 将对象和原型连接起来组成了原型链

    原型链:__proto__ 将对象和原型连接起来组成了原型链