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

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

相关推荐
Wang's Blog14 分钟前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
砚底藏山河1 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年1 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Williamtym1 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
DongQiShanRen1 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室1 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
持敬chijing2 小时前
白盒测试与代码审计-js登录逆向实战
javascript·网络·安全·web安全·网络安全·网络攻击模型
quantdash_cc2 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
yu_zhidun2 小时前
企业电脑监控软件怎么选:别只看功能清单,先看这 6 个底层能力
开发语言·电脑·php·域智盾系统
无忧.芙桃2 小时前
C++语言原理与实践(十六):多态机制讲解
开发语言·c++·多态