美文网首页
js原型对象

js原型对象

作者: 夜静听风吹雨 | 来源:发表于2019-07-06 20:47 被阅读0次

什么是原型对象?

请看下面的代码,我们以各种姿势,创建了几个方法!

    function fn1() {
    }
    var fn2 = function () {
    }
    var fn3 = new Function()

    console.log(typeof fn1) //function
    console.log(typeof fn2) //function
    console.log(typeof fn3)  //function

    console.dir(fn1) //如下图
    console.dir(fn2)//如下图
    console.dir(fn3)//如下图

Snipaste_2019-07-06_20-15-51.png
得出结论~记住,重点
function 对象有一个prototype属性,使用new生成的对象就没有这个prototype属性。

(这里什么是proto,什么是原型链,我们放到后面再说,以防干扰思路)

那么原型对象有什么作用?

这里我们来复习一下自定义构造函数~

   function Person(name, age) {
        this.name = name
        this.age = age
        this.eat = function () {
            console.log("吃饭")
        }
    }
    var per1 = new Person("小明", 18)
    var per2 = new Person("小红", 20)
   
    console.log(per1 === per2) //false
    per1.eat() //吃饭
    per2.eat() //吃饭
    console.log(per1.eat === per2.eat) //false

这里我使用自定义构造函数实例化了两个对象,可以看到,这两个对象的eat方法虽然功能相同,不是同一个方法!

得出结论~~~
自定义构造函数每次实例化出来的对象,构造函数都会创建一次,
所以eat方法在内存中创建了两次!他们在内存中的地址不同,所以不等!
但是因为它们的逻辑和功能一样,这样就导致了代码冗余,影响性能,所以这里就需要用到原型对象!

怎么使用原型及原型的作用

如下:

    function Person(name, age) {
        this.name = name
        this.age = age
    }
    Person.prototype.eat = function () { //将eat方法添加到Person的原型中
        console.log("恰饭")
    } 
    var per1 = new Person("小明", 18)
    var per2 = new Person("小红", 20)
    console.log(per1 === per2) //false
    console.log(per1.eat === per2.eat) //true
    per1.eat() //恰饭
    per2.eat() //恰饭

同样的配方,同样的味道,但不同的是:

通过原型添加的方法,可以完美的解决数据共享问题,从而节省了内存空间...

相关文章

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

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

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

  • Js面向对象

    一、Js面向对象 二、Js原型及原型链 1、原型 JavaScript 的每个对象都继承另一个父级对象,父级对象称...

  • 2022前端高频面试题

    JS相关 1.原型和原型链是什么 原型和原型链都是来源于对象而服务于对象的概念js中引用类型都是对象,对象就是属性...

  • js基础(三)

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

  • 发现•分享—2019-01-17

    文章 JS JS 异步编程六种方案 JS基础—原型对象的那些事(一) JS基础—原型对象的那些事(二) CSS 综...

  • JS基础

    JS基础 JS运算 JS代码块 JS对象 原型对象 GC 正则表达式

  • web2

    js是面向对象的语言 是因为js的高度动态性的对象系统 面对对象变成:基于类 和 基于原型 js属于基于原型 性能...

  • JS原型链

    1什么是JS原型链? 通过__proto__属性将对象与原型对象进行连接. 1.1 JS原型链的作用? 组成的一个...

  • 1.web前端基础储备之—js的面向对象风格以及原型和原型链

    javascript是面向对象风格,基于原型的语言。 目标:了解js面向对象和原型原型链的关系 面向对象(OOP)...

网友评论

      本文标题:js原型对象

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