你的位置:首页 > Java教程

[Java教程]JavaScript中的原型继承


原型链:
Object(构造函数)	object(类型(对象))
var o = {};alert(typeof o);    //结果是objectalert(typeof Object);  //结果是function


 每一个对象有一个属性叫  __proto__ ,这个属性就是这个对象的原型(o. __proto__)

对象有原型,原型也是对象,所以原型也有原型
所有的函数都是对象,继承自Function.prototype,Function.prototype是对象,继承自Object.prototype,Object.prototype是对象,继承自nullobj是对象,继承自Object.prototypeFunction是对象,继承自Function.prototypeFunction是函数,继承自Function.prototype

js成员的访问规则o.方法()首先在o当前这个类型中寻找该成员的定义,如果存在该成员的定义,那么就直接使用改成员;如果该成员不再当前类型中,就访问其原型(原型链中的上一级)以此类推,直到null位置


代码示例:
不使用继承:
var Person = function() {  this.say = function() {    alert("你好");  };};var p1 = new Person();var p2 = new Person();alert(p1.say === p2.say);  //结果为false

每new一个对象,就会创建一块新的内存,所以p1.say和怕p2.say并不是引用的同一个地址

使用原型继承:
var Person = function() {};Person.prototype = {  say:function(){    alert("Mr靖");    }};var p1 = new Person();var p2 = new Person();p1.__proto__.name = "Mr靖";alert(p1.say === p2.say);   //结果是truealert(p2.name);        //结果为"Mr靖"