JavaScript中全是对象("一切包含了状态和行为的单一实体")。
原型:
在 JavaScript 中,每个对象都保持着一块隐藏的状态 —— 一个对另一个对象的引用,也被称作原型。 原型引用是隐藏的,但也有 ECMAScript(JavaScript 的正式名称)的实现可以通过一个对象的__proto__属性(例如谷歌浏览器)访问到这个原型引用。 调用Object.getPrototypeOf函数查看对象原型!
在 JavaScript 中,每个对象都保持着一块隐藏的状态 —— 一个对另一个对象的引用,也被称作原型。 原型引用是隐藏的,但也有 ECMAScript(JavaScript 的正式名称)的实现可以通过一个对象的__proto__属性(例如谷歌浏览器)访问到这个原型引用。 调用Object.getPrototypeOf函数查看对象原型!
JavaScript 中的原型对象的确是特殊的,因为他们遵从以下规则。当告诉 JavaScript 要调用一个对象的 push 方法,或读取对象的 x 属性时,运行时会首先查找对象本身。如果运行时找不到想要的东西,它就会循着 __proto__ 引用和对象原型寻找该成员。当调用 myArray 的 push 方法时,JavaScript 并没有在 myArray 对象上发现 push 方法,而是在 myArray 的原型对象上找到了,于是 JavaScript 调用此方法。上面所描述的行为是指一个对象本身继承了原型上的任何方法或属性。JavaScript 中其实不需要使用类语法也能实现继承。
JavaScript 中的原型对象提供继承功能,同时也就实现了该方法实现的共享。原型也是链式的。换句话说,因为原型对象只是一个对象,所以一个原型对象可以维持到另一个原型对象的引用。原型的 __proto__ 属性是一个指向另一个原型的非空值。当 JavaScript 查找像 push 方法这样的成员时,它会循着原型引用链检查每一个对象,直到找到该成员,或者抵达原型链的末端。原型链为继承和共享开辟了一条灵活的途径。
函数本身就是对象,因此函数可以有自身的方法,属性,并且引用一个原型对象。JavaScript 中的每一个函数对象都有 prototype 属性。千万不要混淆这个 prototype 属性的 __proto__ 属性。他们用途并不相同,也不是指向同一个对象。Array._proto_提供的是数组原型(当作Array函数继承的对象);Array.prototype提供的是所有数组的原型对象(包含所有数组将会继承的方法)。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30319453/viewspace-1721507/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30319453/viewspace-1721507/