JavaScript中的原型继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中的原型继承相关的知识,希望对你有一定的参考价值。

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

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

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

obj是对象,继承自Object.prototype

Function是对象,继承自Function.prototype
Function是函数,继承自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);      //结果是true
alert(p2.name);                //结果为"Mr靖"

 

 

 
 

以上是关于JavaScript中的原型继承的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript探秘:强大的原型和原型链

JavaScript 原型链

JavaScript 原型链

JavaScript中的原型与原型链

深入理解JavaScript系列:强大的原型和原型链

JavaScript中的原型链和继承