js中函数的原型

Posted zxq-zn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中函数的原型相关的知识,希望对你有一定的参考价值。

js中每一个构造函数都有一个prototype的属性,prototype指向一个对象,而这个对象的属性和方法都会被构造函数的实例所继承,因此,需要一些共享的属性和方法可以写在构造函数的原型中

1  用prototype属性可以向构造函数添加可继承的属性和方法,注意constructor属性指向prototype对象所在的函数

    <script>
        function Person()
        
        Person.prototype = 
            constructor: Person,
            name: ‘xxx‘,
            age: 22,
            sayName: function()
                console.log(this.name);
            
        
        var p = new Person();
        p.sayName();//‘xxx‘
        console.log(p.age);//22
    </script>

2  一个同名属性在构造函数和prototype对象中存在时,构造函数的实例采用构造函数里的this属性,优先级类似于:实例>构造函数>原型

    <script>
        function Person()
            this.age = 233;//创建实例时赋给实例的属性
        
        Person.prototype = 
            constructor: Person,
            name: ‘xxx‘,
            age: 22,
            sayName: function()
                console.log(this.name);
            
        
        var p = new Person();
        console.log(p.age);//233
        p.age = 333;
        console.log(p.age);//333
    </script>

3 原型的继承

技术图片
    <script>
        function Person()
            this.age = 233;//创建实例时赋给实例的属性
        
        Person.prototype = 
            constructor: Person,
            name: ‘xxx‘,
            age: 22,
            sayName: function()
                console.log(this.name);
            
        
        var p = new Person();
        console.log(p.age);//233
        p.age = 333;
        console.log(p.age);//333
        function Student()

        
        Student.prototype = new Person();//继承
        var s = new Student();
        console.log(s.name);//‘xxx‘
        s.name = ‘qqq‘;
        console.log(s.name);//‘qqq‘
    </script>
View Code

 

以上是关于js中函数的原型的主要内容,如果未能解决你的问题,请参考以下文章

JS原型与原型链

深入理解JS原型与原型链

理解js中是原型链? 如何实现继承?

js原型和原型链

js原型继承的几种方法

js中原型,原型链的学习与认识