面向对象笔记

来源:互联网 发布:网络招生实战 丁丛 编辑:程序博客网 时间:2024/06/06 10:47

创建对象:
2.构造函数模式
function Person(name,age,job){
this.name=name;
this.age=age;
this.sayName=function(){
alert(this.name);
}
}
var person1=new Person(‘lllrrr’,28);
var person2=new Person(‘yyyccc’,24);

与工厂函数不同之处
1:没有显示式创建对象;2:直接将属性方法给了this;3:没有return语句;
:构造函数是首字母大写,因为构造函数本身也是函数,方便区分、
创建新的实例时new经历了
(1)创建一个新对象;(2)构造函数的作用域给新对象(this的指向新对象);
(3)执行构造函数的代码(为新对象添加属性);(4)返回新对象;
构造函数的问题
每一个新对象都拥有所有的属性!
而且每个实例中的function的定义方式类似于这样
this.sayName=new Function(){ ‘alert(this.name)};
会产生下面的情况;
alert(person1.sayName==person2.sayName); //false;
也就是说,不同实例上的同名函数是不相等的,每个实例都会重新创建。如果将function定义在全局会解决这个问题,但是会导致全局函数过多!!

3)原型模式 prototype
prototype是一个指针,指向一个对象,这个对象的用途包含可以由特定类型的所有实力共享的属性和方法。
自身属性中有和原型中同名的属性,会屏蔽原型中的属性。

原创粉丝点击