构造函数
构造函数原则
- 实例特有属性放到构造函数内部
- 所有实例共享属性和方法放到构造函数显示原型
prototype
中- 所有实例共享方法放到构造函数的显示原型 prototype 中。如果放到构造函数中,那么每实例化一个对象,都要为之重复的创建作用相同的方法,但是地址却不相同,极大的浪费空间。如果放到构造函数的 prototype 中,那么只会创建一次,为所有实例共享。
function Foo(name,age){
this.name = name; // 实例对象特有属性
this.age = age; // 实例对象特有属性
}
// 所有实例共享方法 ===> 所有实例共享方法放到构造函数的显示原型 prototype 中。如果放到构造函数中,那么每实例化一个对象,都要为之重复的创建作用相同的方法,但是地址却不相同,极大的浪费空间。如果放到构造函数的 prototype 中,那么只会创建一次,为所有实例共享。
Foo.prototype.say = function(){
console.log(this.name+'会说');
}
// 所有实例共享方法 ===> 所有实例共享方法放到构造函数的显示原型 prototype 中。如果放到构造函数中,那么每实例化一个对象,都要为之重复的创建作用相同的方法,但是地址却不相同,极大的浪费空间。如果放到构造函数的 prototype 中,那么只会创建一次,为所有实例共享。
Foo.prototype.do = function(){
console.log(this.name+'会做');
}