1.原型

    1. # JS的继承是基于原型的继承
    1. /* 原型
    2. 1.obj.__proto__ 找到它的原型对象
    3. 2.数组上的方法都是挂载在原型上(Array.prototype)的
    4. */
    5. // toString() 因为数组的原型上有字符串toString()
    6. // push,unshift() 因为数组原型上有
    7. var arr = [1,2,3]
    8. console.log(Array.prototype);
    9. console.log(arr.__proto__);
    10. console.log(arr.__proto__ == Array.prototype);
    11. // Object.getPrototypeOf() 也可以访问原型对象
    12. /*
    13. var object = {};
    14. var prototype = Object.getPrototypeOf(object);
    15. console.log(prototype === Object.prototype); // true
    16. */

    2.原型对象的作用

    1. # 原型对象:是某一类对象的基类,所有创建的对象都会共享该原型对象 (共享机制)
    2. # 作用:将对象通用的方法挂载在原型上
    1. var arr = [1,2,3]
    2. Array.prototype.sum = function(params){
    3. if(Array.isArray(params)){
    4. return params.reduce((a,b)=>a+b)
    5. }
    6. }
    7. console.log(arr.sum(arr));
    8. Array.prototype.http = function(){
    9. console.log("http");
    10. }
    11. arr.http()

    11-3原型 - 图1

    1. function Teacher(name,age){
    2. this.name = name
    3. this.age = age
    4. }
    5. /* sayName */
    6. Teacher.prototype.sayName = function(){
    7. console.log(this.name);
    8. }
    9. var p = new Teacher("lisi",30)
    10. console.log(p);

    3.判断一个对象是否是另一个对象的原型对象

    1. isPrototypeOf() 判断一个对象是否是另一个对象的原型对象
    1. var object = {};
    2. console.log(Object.prototype.isPrototypeOf(object)); // true