一、为什么使用对象
前端中,每一个变量、函数等的定义,都会在全局核心BOM(即Window)中创建一个实例,如下图所示
二、解决方案
为了解决上面的情况,可以采用对象字面量的方法来定义,如下
实例
var stu = { course: 'JavaScript', // 属性 grade: 70, // 属性 getInfo: function () { return this.course + '课程的成绩是: ' + this.grade; } };
三、构造函数
作用就是初始化对象属性
实例
var Stu = function (course, grade) { // 初始化对象属性 this.course = course; this.grade = grade; };
注意:如果在构造函数中添加了方法,那么每一个成员都会共有这个方法,会出现冗余的现象,浪费空间
为了解决“注意”中的问题,以下是解决方案:
利用prototype原型属性:将所有实例对象所共享的成员, 应该定义在该实例的构造函数的原型对象属性中(即共享或者继承某一个变量或者函数)
实例
Stu.prototype.getInfo = function () { return this.course + '课程的成绩是: ' + this.grade; };
注意:
Ⅰ Stu.prototype仍是一个对象
Ⅱ 声明在原型属性中的属性或者方法会保存在对象的__proto__属性中,即生成了一个指向构造函数原型的指针
访问这个方法:stu1.getInfo();