原型

  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. */

原型对象作用

原型对象 : 创建的每一个函数,解析器都会向函数中添加一个prototype属性,
这个属性对应着一个对象,就是我们所谓的原型对象.
原型对象是某一类对象的基类,所有创建的对象都会共享该原型对象(共享机制)
作用:将对象的通用方法挂载在原型上

  1. /*在原型对象上自定义方法*/
  2. var arr = [1,2,3]
  3. Array.prototype.sum = function(params){
  4. if(Array.isArray(params)){
  5. return params.reduce((a,b)=>a+b)
  6. }
  7. }
  8. console.log(arr.sum(arr));
  9. Array.prototype.http = function(){
  10. console.log("http");
  11. }
  12. arr.http()

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);

isPrototypeOf( )判断一个对象是否是另一个对象的原型对象

  1. var object = {};
  2. console.log(Object.prototype.isPrototypeOf(object)); // true