美文网首页
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中继承的实现

    JS中继承的实现 #prototype (js原型(prototype)实现继承) 全局的Function对象没有...

  • js中的prototype

    prototype翻译过来是原型的意思,在js中特指对象的原型prototype对象是js实现面向对象的一个重要机...

  • prototype小结

    ### prototype 小结 - 构造函数有prototype属性指向其对应的原型对象: ```js // a...

  • prototype

    prototype 参考链接 mdn constructor 一张图理解JS的原型(prototype、proto...

  • js基础(三)

    js基础 原型链和原型对象 ... ... js没有继承原型对象prototype通常用来添加公共的属性或行为且只...

  • JS原型-prototype

    为了避免自定义构造器中每一个对象都拥有完全一样的属性和方法造成内存耗用的问题,我们可以通过原型将其中共享的部分都放...

  • js原型prototype

    使用函数的 prototype来添加属性,以便于所有对象中都可以访问到 修改原型如上所述, 每个对象都能链接到函数...

  • JS中的继承

    js并不是想java一样面向对象,而是基于对象,所以js是通过prototype的原型链继承 prototype ...

  • JavaScript原型学习笔记

    @(JS技巧)[原型] JavaScript原型学习笔记 什么是原型? 每当你去定义一个prototype的时候,...

  • 原型和原型链的简单理解

    原型 在JS中原型就是prototype对象,用来表示类型之间的关系。 原型链 JS中对象和对象之间是有联系的,通...

网友评论

      本文标题:js原型prototype

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