【无标题】

原型和原型链

  • 所有的函数都是通过new函数创建
  • 所有函数都是对象 通过new Function创建
  • 函数中可以有属性
  • 所有对象都是引用类型
function test() { return {} }
new test() // {} new Object创建的

function test() {  }
new test() //test {}

typeof Object //'function'
typeof Array // 'function'

原型 prototype

所有函数都有一个属性:prototype ,称之为函数原型 // 普通对象没有prototype
默认情况下,prototype是一个普通的Object对象 // prototype = { }
默认情况下,prototype中有一个属性,constructor, 他也是一个对象,它指向构造函数本身

var test =new Object()
test.prototype.constructor===test. //  true
Object.prototype.constructor===Object // true

引式原型 __ proto__

所有对象都有一个属性:__proto__,称之为隐式原型
默认情况下,隐式原型指向创建该对象的函数的原型

// 对象一定是通过构造函数产生 函数也是对象
function test() {  }
var obj = new test();
obj.__proto__ === test.prototype //true

var obj = new test();
obj.__proto__ === Object.prototype

你可能感兴趣的:(原型模式,javascript,开发语言)