标签:
原型链:
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靖"
标签:
原文地址:http://www.cnblogs.com/doforfuture/p/5571167.html