对象不用解释。函数也有属性,常见之一就是prototype。常量也有属性:app
(3).__proto__;//Number {}
函数是一种特殊的对象,它能够直接经过小括号来执行自身代码。函数
函数还有一个特殊的属性prototype,它也是一个对象。spa
prototype对象也有一个特殊的属性constructor,初始的时候它是指向该函数的。prototype
也就是当js解释到function关键字的时候,会建立两个对象,一个是function自己,一个是prototype对象。同时将该函数对象的prototype属性指向prototype,而prototype对象的constructor属性指向该函数对象。code
每一个对象都有一个__proto__属性(低版本的IE中可能没有直接给出吧),该属性十分特殊,由于在调用对象的方法或者访问对象的属性时,js会依次遍历对象自己,该对象的__proto__,该对象的__proto__的__proto__……对象
也就是原型链继承的关键blog
new 关键字用于经过一个函数建立一个对象。继承
其实它主要完成三个工做原型链
最后返回该对象便可。能够如下面的代码代替作用域
function New(f,args){var a= {};a.__proto__ = f.prototype;f.apply(a,args);return a;}
其中:xFunction是自定义的函数,xPrototype是xFunction的原型,xObject=new xFunction()
Object 是JS内置的Object;_prototype_是Object的原型
Empty是全部函数对象的__proto__,是一个特殊的函数,没有prototype,
但愿你们能够共同探讨,给予指点