zoukankan      html  css  js  c++  java
  • prototype

    prototype是js实现代码共享,继承的利器.

    1 共享

     1 var Person = function(name){
     2     this.name = name;
     3 }
     4 Person.prototype.pName = function(){
     5    alert(this.name);  
     6 }
     7 
     8 var p1 = new Person();
     9 var p2 = new Person();
    10 alert(p1.pName === p2.pName); //true

       细节:

        1 new Person() 相当于

                      var obj = {};  //创建一个新对象

                      obj.__proto__ = Person.prototype;   //把函数的prototype属性赋给新对象的原型属性

                      Person.call(obj);

         2 p1.pName 执行时, 先去p1对象本身找方法,如没有则到__proto__属性找

    2 继承

     1 var Person = function(name){
     2     this.name = name;
     3 }
     4 Person.prototype.pName = function(){
     5     alert(this.name);  
     6 }
     7  
     8 var Student = function(name,score){
     9     Person.pName.call(this,name);
    10     this.score = score;          
    11 }
    12 Student.prototype = new Person();
    13 
    14 var stu = new Student("stu");
    15 stu.pName(); //stu

    细节:

        1, 12行,把Student.prototype的设为Person对象,该对象的__proto__属性有pName方法

        2,  stu.pName 执行时, 在找对象本身此方法,没有 -> stu.__proto__(此时为Person对象),没有 -> Person().__proto__,找到

    最终通过对象prototype链实现了继承

    总结:

    1 无new不谈prototype

    2 构造函数创造了原型链

     

     

  • 相关阅读:
    第二次
    第一次
    win下less自动编译脚本
    厦门攻略游记
    npm常用命令
    青岛旅行规划及玩后感
    kissynode run on windows解决方案,contextify nodejs windows solution
    win nodejs下 findit只返回第一个文件问题
    jetty自动添加path的问题
    微博输入框统计
  • 原文地址:https://www.cnblogs.com/79home/p/3539950.html
Copyright © 2011-2022 走看看