zoukankan      html  css  js  c++  java
  • 4.原型的动态性



    function Person(){

    }
    var firend=new Person();
    Person.prototype.sayHi=function(){
    alert("hi");
    }
    firend.sayHi(); // hi
    // 没有重写原型!!!!
    //虽然sayHi()方法是在firend实例化之后定义的,但是firend仍然可以访问sayHi()方法,
    //其原因可以归结为实例与原型之间的松散连接关系,当我调用 firend.sayHi()方法时,会在实例中搜索 sayHi
    属性,在没找到的情况下,会继续搜索原型,因为实例与原型之间的连接是一个指针,不是副本,因此就可以在原型中找到sayHi,
    并返回保存在那的函数。



    function Person2(){
    }
    var firend2=new Person2();
    Person2.prototype={
    constructor:Person2,
    name:"summer2",
    age:25,
    job:"enginner2",
    sayName2:function(){
    alert(this.name);
    }
    }
    firend2.sayName2();// 报错 : firend2.sayName2 is not a function

    // 上面的例子重写了整个原型对象,我们知道,调用构造函数时,会为实例添加一个指向最初原型的(prototype)指针,
    //而把原型修改为另外一个对象就等于切断了构造函数与最初原型之间的联系,请记住:实例中的指针紧指向原型,而不指向构造函数
  • 相关阅读:
    C# 类总结
    VS 常见快捷键(转)
    总结C#语言命名规范 (转)
    使用DEV控件注意点
    老程序员的忠告(转)
    对结果集进行分页显示
    类库项目设定
    Oracle 分类统计sql
    开发过程中注意点
    Start with connect by prior(转)
  • 原文地址:https://www.cnblogs.com/liululu/p/5830116.html
Copyright © 2011-2022 走看看