您的位置:首页 > Web前端 > JavaScript

《学习日记》---javascript的原型链理解

2015-09-15 15:05 381 查看
首先创建一个JS对象的两种方法:

一、普通对象(字面式):var person = {name:haha,age:20,getName:function(){return this.name}};

二、函数对象(构造器):function person(name,age){this.name = name,this.age = age}; person.prototype={getAge:function(){return this.age}}; var parents = new person()

区别:

普通对象只有__proto__属性,而函数对象有原型属性prototype,因此普通对象是不可以被继承的,而函数对象是可以被继承的。

__proto__属性:是指向原型对象prototype属性

prototype属性:存在于堆空间中,是一个对象,相当于构造器,构造器里面包含了这个对象的属性和方法,所有由这个对象创建的对象都会继承这个对象的方法

举个例子:var p1 = new person();

p1.getAge()//调用的是person.prototype中的方法。

JS实现继承的方式:原型链

var p = new person();
console.log( p.__proto__ === Person.prototype );//true

console.log( Person.prototype.__proto__ === Object.prototype ); //true

console.log( Person.__proto__ === Function.prototype );//true

PS:

每次给对象的属性赋值时,都会在原型链中寻找第一个匹配这个属性的对象然后赋值,其余之后的对象会被隐式隐藏掉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: