javascript原型链

JavaScript不包含传统的类继承模型,而是使用prototype原型模型。JavaScript中的每个对象都有一个内部私有的链接指向另一个对象,这个对象就是原对象的原型。这个原型对象也有自己的原型,直到对象的原型为null为止(也就是没有原型)。这种一级一级的链结构就称为原型链。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain

❶使用原型链的继承方式。

❷两种不同的属性:一种是对象自身的属性,另一种是继承于原型链上的属性。

❸在原型链上查找属性比较耗时,对性能有副作用。另外,试图访问不存在的属性时会遍历整个原型链。

❹遍历对象的属性时,原型链上的每个属性都是可枚举的。

var obj = {a: 1};
// 对象obj继承了Object.prototype上面的所有属性
//原型链: obj ---> Object.prototype ---> null
obj.hasOwnProperty('a');//true,hasOwnProperty 是 JavaScript 中唯一一个只涉及对象自身属性而不会遍历原型链的方法。
var arr = ["w", "j", "y"];
// 数组都继承于Array.prototype (indexOf, forEach,等方法都是从它继承而来).
// 原型链: arr ---> Array.prototype ---> Object.prototype ---> null

除非为了兼容新JavaScript特性,否则不要扩展原生对象的原型。

http://wangjingyi.iteye.com/blog/2038264

相关推荐