资讯专栏INFORMATION COLUMN

对象、构造函数和prototype

kuangcaibao / 426人阅读

摘要:创建对象和构造函数创建对象有多种方法,上述的一种,属于构造函数。但是这种方法由于没有解决对象识别的问题直到对象的类型,并不好接下来的一种方法就是下面重点介绍的自定义构造函数。

对象

每个对象的创建都基于引用类型,比如:

我们可以创建自定义对象,最简单的方法就是创建一个Object的实例,比如:

上面的例子创建了名为person的对象,并添加了3个属性。

创建对象和构造函数

1.创建对象有多种方法,上述的一种,属于Object构造函数。
2.此外,还可以用字面量对象创建一个函数,如下:

3.蓝后,是第三种,用工厂模式 创建,如下:

person()函数会根据接收的参数创建一个包含所有信息的对象。但是这种方法由于没有解决对象识别的问题(直到对象的类型),并不好~
接下来的一种方法就是下面重点介绍的:自定义构造函数。

自定义构造函数
与上述的构造函数不同,用Object、Array之类的构造函数被称为原生构造函数。自定义构造函数可以自定义对象的属性和方法。构造函数就是初始化一个实例对象。

让我们来看一个栗子~

注意~构造函数有一个特点,默认函数首字母大写。在上面的栗子中,person1就是Person对象的一个实例。person1有一个constructor的属性,指向Person

prototype和原型对象

我们创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,这个对象包含了由特定类型所有实例共享的属性和方法。我们可以说Person.prototype是person1的原型对象。所以,Person.prototype更像是一个模型和中转站。让我们看下面的栗子:

如上,我们将callName()方法和所有的属性添加到了Person的prototype属性中。Person.prototype是一个第三者,Person和person1实际上是没有链接的,他们两者的联系是通过Person.prototype来建立的,而它里面会保存包括name、age、job等属性和callName()方法。或许通过下面这个图更好理解。

更简单的原型语法

我们可能会觉得每次都要写一遍Person.prototype会比较麻烦,所以我们可以用字面量的方式:

上面的代码最终的执行结果也是一样的,只是一点不同:constructor不再指向Person了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92855.html

相关文章

  • 学习JavaScript的原型笔记

    摘要:通过同一个构造函数实例化的多个对象具有相同的原型对象。构造函数的原型对象是实例对象通过属性也指向原型对象。如果把函数当成实例对象的话,其构造函数是,其原型对象是类似地,函数的构造函数也是,其原型对象是。 JavaScript的原型(prototype、__proto__、constructor) 构造函数:function Foo() {};实例对象: let f1 = new Foo...

    Nino 评论0 收藏0
  • JS中的原型链原型的认识

    摘要:在上面的各种原型的变换中,其实难点就在于构造函数也是对象原型对象等所有对象都由构造这四个点。 这篇文章主要是学习一下JavaScript中的难点------原型和原型链 自定义一个对象 我们学习一门编程语言,必然要使用它完成一些特定的功能,而面向对象的语言因为符合人类的认知规律,在这方面做得很好,今天我以JS为例,探索一下JS不同于其他面向对象的语言的地方-------原型和原型链 首...

    Juven 评论0 收藏0
  • JS中的原型链原型的认识

    摘要:在上面的各种原型的变换中,其实难点就在于构造函数也是对象原型对象等所有对象都由构造这四个点。 这篇文章主要是学习一下JavaScript中的难点------原型和原型链 自定义一个对象 我们学习一门编程语言,必然要使用它完成一些特定的功能,而面向对象的语言因为符合人类的认知规律,在这方面做得很好,今天我以JS为例,探索一下JS不同于其他面向对象的语言的地方-------原型和原型链 首...

    Shimmer 评论0 收藏0
  • JavaScript学习总结(五)原型原型链详解

    摘要:原型对象内部也有一个指针属性指向构造函数实例可以访问原型对象上定义的属性和方法。在创建子类型的实例时,不能向超类型的构造函数中传递参数。 赞助我以写出更好的文章,give me a cup of coffee? 2017最新最全前端面试题 私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数。 function ...

    EscapedDog 评论0 收藏0
  • JS 原型及原型链学习

    摘要:所以继承了对象的所有方法,当你用时,会先查一下它的构造函数的原型对象有没有有方法,没查到的话继续查一下的原型对象有没有这个方法。 普通函数与构造函数的区别 在命名规则上,构造函数一般是首字母大写,普通函数遵照小驼峰式命名法。 在函数调用的时候: function fn() { } 构造函数:1. new fn( ) 2 .构造函数内部会...

    PiscesYE 评论0 收藏0

发表评论

0条评论

kuangcaibao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<