原型对象
-
原型 prototype
-
我们所创建的每一个函数,解析器都会想函数中添加一个属性prototype
-
这个属性对应着一个对象,这个对象就是我们所谓的原型对象
-
如果函数作为普通函数调用prototype没有任何作用
-
当函数通过构造函数调用时,它所创建的对象中都会有一个隐含的属性
-
指向该构造函数的原型对象,可以通过proto来访问该属性
-
-
原型对象就相当于一个公共的区域,所有同一个实例都可以访问到原型对象
-
可以将对象中共有的内容,统一设置到原型对象里
-
当我们访问对象的一个属性或者方法时,先会在对象自身中寻找,
-
如果有则直接使用
-
如果没有则会去原型对象中寻找
-
-
以后我们创建构造函数时,可以将这些对象共有的属性和方法统一添加到构造函数的原型对象中这样不用分别为每一个对象添加,也不会影响全局作用域
-
-
使用原型对象,优化构造函数
-
// 使用原型对象,优化构造函数 function Person(name, age, gender){ this.name = name; this.age = age; this.gender = gender; Person.prototype.sayHello = function(){ alert("hello大家好,我是:"+ this.name); } } var per1 = new Person("swk",18,"male"); var per2 = new Person("zbj",28,"male"); var per3 = new Person("shs",38,"female"); per1.sayHello(); per2.sayHello(); console.log(per1.sayHello === per2.sayHello);
-