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

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

相关推荐
earthzhang202118 小时前
【2051】【例3.1】偶数
开发语言·数据结构·算法·青少年编程·图论
VOLUN18 小时前
Vue3 选择弹窗工厂函数:高效构建可复用数据选择组件
前端·javascript·vue.js
南山安19 小时前
面试必考点: 深入理解CSS盒子模型
javascript·面试
专注VB编程开发20年19 小时前
.NET Reflector反编绎,如何移除DLL中的一个公开属性
开发语言·c++·c#
VOLUN19 小时前
Vue3 中 watch 第三个参数怎么用?6 大配置属性 + 场景指南
前端·javascript·vue.js
Larcher19 小时前
100 行代码搞定 AI Logo 生成网站!新手也能吃透的 AIGC 前端实战
前端·javascript
社恐的下水道蟑螂19 小时前
彻底搞懂 CSS 盒子模型:从 content-box 到 border-box 的实战指南
javascript
vxiam14xxx19 小时前
【Java Swing 项目】java 聊天系统
java·开发语言·python
神秘的猪头19 小时前
CSS 盒子模型详解:从 `box-sizing` 理解布局本质
前端·javascript
AAA不会前端开发19 小时前
JavaScript基础知识(三)数组,对象与其他属性
javascript