zoukankan      html  css  js  c++  java
  • js原型的动态性问题 -- 使用原始原型语法与简单原型语法的区别

    对于原型原型对象的重写,我们可以使用以下两种方法:

    1. 使用最原型语法,将需要添加的属性一条条添加到原型对象中
    function Person(){}
    
    Person.prototype.name = "tom";
    Person.prototype.age = 24;
    Person.prototype.job = "doctor";
    Person.prototype.sayname=function(){
        alert(this.name);
    }
    
    var person1 = new Person();
    person1.sayname();  //tom

        2. 使用一种简单的原型语法,将添加的属性用字面量的形势封装起来

    function Person(){}
    Person.prototype = {
        name : "tom",
        age : 24,
        job : "doctor",
        sayname : function(){
            alert(this.name);
        }
    }
    var person2 = new Person();
    person2.sayname();    //tom

             虽然两种方式都可以使用,但是,在遇到原型重写时,就会有所差别。

    1. 第一种方法:

     

    function Person(){}
    
    var friend = new Person();     //实例化
    Person.prototype.name = "tom";
    Person.prototype.age = 24;
    Person.prototype.job = "doctor";
    Person.prototype.sayname=function(){
            alert(this.name);         //tom
    }

    2. 第二种方法:

    function Person(){
    
        }
        var friend = new Person();
        Person.prototype = {
            name : "tom",
            age : 24,
            job : "doctor",
            sayname : function(){
                alert(this.name);
            }
        }
        friend.sayname();        //报错,没有找到sayname方法

    原理如下:

    此时,重写的原型对象切断了现有原型与之前任何已经存在的对象实例的联系,它的引用认为最初原型,而最初原型中没有sayname()方法,股报错。

  • 相关阅读:
    汉诺塔略写
    第六章实验报告
    第三次实验报告
    第五章 循环结构反思
    第二次实验报告
    第一次实验报告x
    第九章 结构体与共用体
    第八次实验报告
    第7章 数组实验
    第六章 函数和宏定义实验(2)
  • 原文地址:https://www.cnblogs.com/Zqian/p/7821738.html
Copyright © 2011-2022 走看看