在 javaScript
中,'一切皆对象' ! 所有对象都有一个隐藏属性__proto__
通过这个可以获取其对象的原型对象,也经常有人把__proto__
叫作 隐藏原型属性
. 它指向对象的构造函数的原型对象。 如下代码:
function A() {
//
}
var a = new A() ;
console.log(a.__proto__) ; // Function.prototype
var obj = {
attr:'xxx'
}
console.log(obj.__proto__) ; //Object.prototype
Function
除了有__proto__
属性外,还有一个prototype
属性,这是一个指针,指向方法或者对象的的原型对象。它包含对象共用的方法,类似java
中的类方法
,在javaScript
中的继承就是通过这个来实现的, 我们可以通过改变某一个对象的的原型来实现继承,如果某一个对象的原型被改变了,则这个对象就拥有了这个原型上的所有方法,这就是所谓的继承
,这里需要注意的是另一个属性constructor
,该属性指向对象的构造方法, 如上a
的constructor
只想函数A
。当我们改变了对象的原型,同时需要修正其constructor
. 这个 constructor
是prototype
的一个属性.