JS原型对象prototype

让我简单的为大家介绍一下原型对象prototype吧!

使用原型实现方法共享

1.构造函数通过原型分配的函数是所有对象所 共享的。

2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象

3.这个对象可以挂载函数,对象实例化不会多次创建原型上函数,节约内存

4.我们可以把那些不变的方法,直接定义在 prototype 对象上,这样所有对象的实例就可以共享这些方法

5.构造函数和原型对象中的this 都指向 实例化的对象

javascript 复制代码
    function Person(name,age){
        this.name = name
        this.age = age
    }
    // 方法可以共享
    Person.prototype.sing = function(){
        console.log("唱歌")
    }
    let zs = new Person("张三",18)
    zs.sing() // 唱歌
    let ls = new Person("李四",19)
    ls.sing() // 唱歌
    console.log(zs.sing === ls.sing) // true

构造函数里面的 this 指向实例对象

javascript 复制代码
    let that 
    function Person(name, age) {
        that = this
        this.name = name
        this.age = age
    }
    // 构造函数里面的 this 就是实例对象 zs
    let zs = new Person("张三",18)
    console.log(that === zs) // true

原型对象里面的函数 this 指向的还是实例对象

javascript 复制代码
    let that 
    function Person(name) {
        this.name = name
    }
    Person.prototype.sing = function() {
        that = this
        console.log("唱歌")
    }
    let zs = new Person("张三")
    zs.sing()
    console.log(that === zs) // true

感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

相关推荐
Boom_Shu10 分钟前
浅拷贝与深拷贝
开发语言·c++·算法
2601_9618451516 分钟前
2026法考资料pdf|电子版|资料已整理
开发语言·前端框架·pdf·c#·xhtml·csrf·view design
何以解忧,唯有..17 分钟前
Go 语言数据类型详解:从基础到复合类型
开发语言·golang·mfc
Mortalbreeze19 分钟前
C++ Lambda表达式详解:从捕获列表到底层原理
开发语言·c++
MATLAB代码顾问25 分钟前
Python NumPy数值计算核心指南
开发语言·python·numpy
只做人间不老仙31 分钟前
C++ grpc 拦截器示例学习
开发语言·c++·学习
踏着七彩祥云的小丑32 分钟前
Go学习第7天:Map集合 + 递归函数 + 类型转换
开发语言·学习·golang·go
何以解忧,唯有..34 分钟前
Go语言变量的声明方式详解
开发语言·后端·golang
触底反弹36 分钟前
一文彻底搞懂 JavaScript 栈和队列(建议收藏)
javascript·算法·面试
半夜燃烧的香烟41 分钟前
springboot3.0 集成minio上传文件,支持多个桶名
java·开发语言·spring boot