原型对象的概念
- 我们所创建的每一个函数,解析器都会想函数中添加prototype属性,这个属性对应着一个对象,这个对象就是原型对象
- 作为普通函数,原型对象无用
- 当函数被当作构造函数调用是,他所创建的对象就会有一个隐含属性,只想改构造函数的原型对象。我们可以用
__proto__
来访问该属性(未被标准化) - 原型对象即一个公共区域,所有同一个类的实例都可访问到此原型对象。我们可以将对象中的共有内容置于子原型对象中
- 当访问对象的一个属性或方法时,他会现在对象自身寻找。如果有则直接使用,没有则再去原型对象中寻找。
原型对象的用法和作用
用法
MyClass.prototype.sayHello = function(){
alert("Hello");
} //向MyClass的原型对象中添加sayHello方法
使用原型对象的原因
创建共有的属性和方法,放在构造函数则占用资源,放在公共区域则污染全局作用域,所以放在构造函数的原型对象中。
hasOwnProperty()
检查对象自身是否具有某属性(不包含在原型对象里的),用hasOwnProperty()
,返回值为布尔值
ex:a.hasOwnProperty("name"); // true/false
寻找对象的属性和方法的流程
自身 => 自身的原型 => 自身原型的原型 => 父元素 => 父元素的原型 => 父元素原型的原型 =>……=> object =>object的原型(止)
垃圾回收
对无任何引用的对象,JS自动进行垃圾回收,无需也无法人为操作。