面向对象编程回顾和总结(1)
我们都知道,JavaScript 语言的对象体系,不是基于“类”的,而是基于构造函数(constructor)和原型链(prototype)。JavaScript 语言使用构造函数作为对象的模板。所谓”构造函数”,就是专门用来生成对象的函数。它提供模板,描述对象的基本结构。一个构造函数,可以生成多个对象,这些对象都有相同的结构。
构造函数的命名通常是以大写首字母开头:
var Person=function(){
this.name="Car";
};
或者
function Person(){
this.name="车";
};
在这里需要和大家提醒的是,既然构造函数是创建实例对象的模板,这里面一定有一个指向实例对象的this,你可以把this看成实例对象,this所拥有的属性和方法通过new使实例对象继承构造函数中属性和方法;
所以,构造函数有两个大特点:
- 函数体内部使用了
this关键字,代表了所要生成的对象实例。 - 生成对象的时候,必需用
new命令,调用Person函数。
var Person = function (){
this.price = 1000;
};
var v = Person();
console.log(v.price);//undefind
console.log(price);//1000 what? 怎么成了一个全局变量?
所以这里提示大家的就是:在new一个实例时 ,一定要加new啊,当然如果不加也可以有别的方法避免这类情况出现;
我们知道了如何实例化一个对象,那么是不是也 非常也搞搞清楚这伟大的new先生在这之中起了什么神奇的作用呢?
- 创建一个空对象,作为将要返回的对象实例
- 将这个空对象的原型,指向构造函数的
prototype属性 - 将这个空对象赋值给函数内部的
this关键字 - 开始执行构造函数内部的代码
记住new命令最终返回的是一个对象,且这个对象的原型(__proto__)就是构造函数的原型对象
浙公网安备 33010602011771号