JavaScript-原型、原型链、对象继承

原型和原型链

所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。有C++基础的可以参考C++中的继承来理解。

Notes:

1.原型的应用

	(1)利用原型特点和概念,可以提取共有属性
	(2)也可以进行**增、删 、改、 查操**作
		通过对**对象属性**的操作**无法**操作原型的属性,只能通过操作原型的prototype来修改(相当于直接修改其祖先),后代无法直接干预祖先的属性,删除操作与对象对其自身属性的操作类似,都需要借助delete命令。

2. __proto__ 和 constructor

隐式属性__proto__   -- 对象查看原型
 	    __proto__指向当前对象的原型(可以被修改)
constructor 	 -- 对象查看构造函数

3.原型链

JavaScript 的对象继承是通过原型链实现的。
定义一个对象后,若通过该对象访问一个属性,当这个对象并没有这个属性时,会上溯到其原型查找其原型是否有药访问的属性,若没有再向上找原型,这种一层一层的继承关系就是原型链。举个例子,小强到超市买了一个棒棒糖,没有付钱,然后回家找他爸爸老强拿钱,老强的零花钱也因为吃零食花光了,老强带小强去找老老强要钱,老老强有零花钱,最后支付给超市,流水小票上显示小强支付棒棒糖一元。。。。。。JavaScript的原型链和C++的父类子类的相互关系一致,有学习过C++的理解原型链会比较快。

4.Object.create()方法

绝大多数(而非全部)对象的最终都会继承自Object.prototype,即在绝大对数情况下 Object 位于原型链的顶端。
JavaScript中规定了一种方法,Object.create( 一个已经定义过的原型 ) 用来创建一个新对象,让现有的对象提供提供新创建的对象的__proto__属性;Object.create(null) 这个创建语言生成的就是上面提到的绝大多数的对立面——极少数的并不继承自Object的对象。

发布了13 篇原创文章 · 获赞 9 · 访问量 134

猜你喜欢

转载自blog.csdn.net/flower_48237/article/details/103882924