javascript原型链理解
2016-10-20 11:18
120 查看
javascript原型和原型链的引入,最初的目的是属性和方法的共享。没有原型,我们使用同一个构造函数新建的一系列对象,就都拥有一组完全相互独立的属性和方法,但是方法和一些属性我们不需要所有对象都各自有一个,有时候我们甚至需要所有对象的这些属性和方法是同一个,可以达到修改一个,所有的都要改变。这种需求在C#、java等语言中使用类和继承来实现,在js中没有用这种方法,而是给多有对象给了一个__proto__属性,同一个构造函数创建的所有对象的__proto__属性指向同一个对象,这个对象就是构造函数的prototype属性指向的对象。利用这个对象我们就可以将一些属性和方法进行共享了。js中函数也是对象,是Function构造函数的一个实例对象,所以js中所有的自定义函数的__proto__属性都指向Function的prototype对象。
Person是自定义的函数,没有指定prototype对时,会自动新建一个Object的实例对象,作为Person函数的prototype对象。
Person函数,同时也是Function构造函数的一个实例对象,所以Person的__proto__对象指向Function的prototype对象。
P是Person的一个实例对象,__proto__属性指向构造函数的prototype对象。
ObjectInstance是Object构造函数的一个实例对象。
原型系统中Object.prototype和Function.prototype两个对象是原型链顶部的两个对象。修改这两个对象会影响后面的所有函数和对象的内容。
相关文章推荐
- 深入理解javascript原型和闭包
- javascript中的原型理解
- 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】
- 谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
- javascript关于原型的深刻理解
- 深入理解javascript原型和闭包(7)——原型的灵活性
- 深入理解javascript原型和闭包(11)——执行上下文栈
- 理解 javascript 中的 构造函数 原型对象 实例对象 之前的关系
- JavaScript原型理解
- 【JavaScript】关于javascript原型的深入理解
- 深入理解javascript原型和闭包(5)——instanceof
- 深入理解JavaScript系列(5):强大的原型和原型链
- 深入理解javascript原型和闭包(7)——原型的灵活性
- 深入理解javascript原型和闭包(8)——简述【执行上下文】上
- JavaScript的原型链继承__propt__、prototype、constructor的理解、以及他们之间相互的关系。
- 深入理解javascript原型和闭包(9)——简述【执行上下文】下
- 深刻理解JavaScript基于原型的面向对象
- 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】
- 深入理解javascript原型和闭包(7)——原型的灵活性
- 深入理解javascript原型和闭包(6)—继承