title: 构造函数和原型
date: 2021-06-19 17:02:49
tags:
构造函数和原型
目标
- 能够使用构造函数创建对象
- 能够说出圆形的作用
- 能够说出访问对象成员的规则
- 能够使用ES5新增的一些方法
1. 构造函数和原型
1.1 概述
创建对象可以通过以下三种方式:
-
对象字面量
var obj1 = {};
-
new Object()
var obj2 = new Object();
-
自定义构造函数
function Star(uname, age) { this.uname = uname; this.age = age; this.sing = function() { console.log("我会唱歌"); } } var people1 = new Star('小明',18); people1.sing();
1.2 构造函数
构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
在JS中,使用构造函数时要注意以下两点:
- 构造函数用于创建某一类对象,其首字母要大写
- 构造函数要和 new 一起使用才有意义
new 在执行时会做四件事情:
- 在内存中创建一个新的空对象。
- 让this指向这个新的对象。
- 执行构造函数里面的代码,给这个新对象添加属性和方法。
- 返回这个对象(所以构造函数里面不需要 return)。
JavaScript的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的this上添加。通过这两种方式添加的成员,分别成为静态成员和实例成员。
- 静态成员:在构造函数本上添加的成员称为静态成员,只能由构造函数本身来访问。
- 静态成员:在构造函数内部创建的成员称为实例成员,只能由实例化的对象来访问。
1.3 构造函数的问题
构造函数方法很好用,但是存在浪费内存的问题。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnSilt7j-1624943609495)(%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E5%92%8C%E5%8E%9F%E5%9E%8B%20037cdef6ee2348edb515059144b84f85/Untitled.png)]
1.4 构造函数原型prototype
构造函数通过原型分配的函数是对象所共享的。
JavaScript规定,每个构造函数都有一个prototype 属性,指向另一个对象,注意这个prototype属性,执行另一个对象。注意这个 pr