所有的函数都是函数对象。其typeof 结果为function
function Student(name, id) { This.name = name; This.id = id; }
|
函数声明时,首先创建一个空对象,之后声明一个construtor属性,其值为此函数。
之后把此对象赋给函数对象的prototype属性。所有通过此函数创建的对象都共用prototype属性指向的对象的属性及方法。
var stu1 = new Student(‘cy’, ‘05130312’);
|
当调用Student时首先会创建一个空对象即new Object()并赋给stu1变量。
之后会把此对象传递给Student函数中的this。
Student内部可以利用this来给对象添加属性及方法。
Student.prototype.study = function () { alert(‘studing’); }
|
如果把方法的声明放入函数内部,那么每创建一个对象都会生成一个指向方法的属性。而方法本来是可以共用的。没有必要每个对象都有一个,因此使用上述方式声明。
总结:
- 属性的声明放入函数内部。
- 方法的声明放入函数外部,利用prototype方式声明。