《学习日记》---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 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:
每次给对象的属性赋值时,都会在原型链中寻找第一个匹配这个属性的对象然后赋值,其余之后的对象会被隐式隐藏掉。
相关文章推荐
- JavaScript中this详解
- 使用百度地图API生成麻点图
- JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
- 浅谈JavaScript中的string拥有方法的原因
- js打印对象 很有用的一个函数
- javascript自执行函数为什么要把windows作为参数传进去
- 利用百度API(JavaScript 版)实现在地图上绘制任一多边形,并判断给定经纬度是否在多边形范围内。以及两点间的测距功能
- JS节点元素
- js运动框架----3.缩放效果
- js中 javascript:void(0) 用法详解
- JS-作用域链
- JS-提高JS代码质量
- javascript中alert()与console.log()的区别
- 理解JavaScript原型
- JSTL标签库 fn标签
- js 实现判断表单中必填项并进行提示
- JavaScript学习笔记之function函数改变form表单的action跳转到指定页面
- Form表单提交前进行JS验证的3种方式
- 导入JSTL库导致错误500
- javascript的对象