原型对象的概念

  • 我们所创建的每一个函数,解析器都会想函数中添加prototype属性,这个属性对应着一个对象,这个对象就是原型对象
  • 作为普通函数,原型对象无用
  • 当函数被当作构造函数调用是,他所创建的对象就会有一个隐含属性,只想改构造函数的原型对象。我们可以用__proto__来访问该属性(未被标准化)
  • 原型对象即一个公共区域,所有同一个类的实例都可访问到此原型对象。我们可以将对象中的共有内容置于子原型对象中
  • 当访问对象的一个属性或方法时,他会现在对象自身寻找。如果有则直接使用,没有则再去原型对象中寻找。


原型对象的用法和作用

用法

  1. MyClass.prototype.sayHello = function(){
  2. alert("Hello");
  3. } //向MyClass的原型对象中添加sayHello方法


使用原型对象的原因

创建共有的属性和方法,放在构造函数则占用资源,放在公共区域则污染全局作用域,所以放在构造函数的原型对象中。

hasOwnProperty()

检查对象自身是否具有某属性(不包含在原型对象里的),用hasOwnProperty(),返回值为布尔值
ex:a.hasOwnProperty("name"); // true/false

寻找对象的属性和方法的流程

自身 => 自身的原型 => 自身原型的原型 => 父元素 => 父元素的原型 => 父元素原型的原型 =>……=> object =>object的原型(止)

垃圾回收

对无任何引用的对象,JS自动进行垃圾回收,无需也无法人为操作。