美文网首页
js原型prototype

js原型prototype

作者: 糖醋里脊120625 | 来源:发表于2019-07-31 11:26 被阅读0次

    使用函数的 prototype来添加属性,以便于所有对象中都可以访问到

     function Student() {
            this.name = 'LeBron James';
            this.gender = 'M';
        }
        Student.prototype.age = 15;
        var studObj1 = new Student();
        alert(studObj1.age); // 15
        var studObj2 = new Student();
        alert(studObj2.age); // 15
    

    修改原型
    如上所述, 每个对象都能链接到函数的原型对象. 如果您更改了函数的原型, 则只有新对象将链接到更改后的原型. 所有其他现有对象仍然链接到旧的函数原型. 下面实例来演示这个场景:

      function Student() {
            this.name = 'LeBron James';
            this.gender = 'M';
        }
        Student.prototype.age = 15;
        var studObj1 = new Student();
        alert('studObj1.age = ' + studObj1.age); // 15
        var studObj2 = new Student();
        alert('studObj2.age = ' + studObj2.age); // 15
        Student.prototype = { age : 20 };
        var studObj3 = new Student();
        alert('studObj3.age = ' + studObj3.age); // 20
        alert('studObj1.age = ' + studObj1.age); // 15
        alert('studObj2.age = ' + studObj2.age); // 15
    

    自己看代码
    原型的作用
    在JS中,每个对象都有自己的原型。当我们访问对象的属性和方法时,JS会先访问对象本身的属性和方法。如果对象本身不包含这些属性和方法,则访问对象对应的原型。

      function Person(name,age){
        // 对象自身的属性
        this.name = name;
        this.age = age
        this.sayName = function(){
            alert(this.name);
        };
    }
    //原型上的方法
    Person.prototype.sayAge = function(){
        alert(this.age)
    }
    var xiaoming = new Person("XiaoMing",12);
    var xiaoHong = new Person("XiaoHong",11);
    // 调用自身不存在的方法
    xiaoming.sayAge(); // 12
    xiaoHong.sayAge(); // 11
    

    既然原型是一个对象,那么,当我们访问的属性和方法在原型不存在,就会继续访问原型的原型,直至Object.prototype。

    function Person(name,age){
        this.name = name;
        this.age = age;
        this.sayName = function(){
            alert(this.name);
        };
    }
    Person.prototype.sayAge = function(){
        alert(this.age)
    }
    // 在Object.prototype增加一个“自我介绍”的方法
    Object.prototype.introduce = function(){**
        alert("My name is " + this.name + ",I'm " + this.age + " years old!")
    }
    var xiaoming = new Person("XiaoMing",12);
    // 调用对象自身和原型上均不存在的方法
    xiaoming.introduce(); // My name is XiaoMing,I'm 12 years old!
    

    相关文章

      网友评论

          本文标题:js原型prototype

          本文链接:https://www.haomeiwen.com/subject/dbdzrctx.html