博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型链
阅读量:7186 次
发布时间:2019-06-29

本文共 1302 字,大约阅读时间需要 4 分钟。


title: 技术分享篇

Welcome

原型链

原型对象

在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象 Object 和 函数对象 Function。

一般通过 new Function 产生的对象是函数对象,其他对象都是普通对象。

所有的对象都有(proto)属性 只有函数对象有(prototype)属性

函数对象

function fn(){};	var fn1=function(){};	console.log(typeof fn);    //function 	console.log(typeof fn1);    //function 	console.log(typeof Object);    //function 	console.log(typeof Array);    //function 	console.log(typeof Date);    //function 	......复制代码

原型对象其实就是构造函数的一个实例对象,例如人对象,相当于在person创建的时候,自动创建了一个它的实例,并且把这个实例赋值给了prototype。

function Person(){};  	let temp = new Person();  	Person.prototype = temp;  复制代码

原型链

原型链是实现继承的主要方法

原型链的思路:利用原型让一个引用类型继承另一个引用类型的属性和方法。

JS通过原型链实现继承列子:

//定义一个 Animal 构造函数	function Animal(){		this.type = 'Animal';		}	//给 Animal 定义方法	Animal.prototype.speack = function(){		console.log(this.type);	} 	// 定义一个 Dog 对象	function Dog(name){		this.name = name;		this.type = '汪汪汪';	}	//改变 Dog 的 prototype 指针,指向一个 Animal 实例	Dog.prototype = new Animal();	Dog.prototype.speak = function () {	 	console.log(this.name+this.type+"叫");	}	var dog = new Dog('小黄');	dog.speak();  //Animal 	//输出 小黄汪汪汪叫。复制代码

这就说明,我们可以通过原型链的方式,实现 Dog 继承 Animal 的所有属性和方法。

总结来说: Dog.prototype 指向的原型对象后,实例的内部指针也发生了改变,指向了新的原型对象,然后就能实现类与类之间的继承了。(但是如果在重写原型对象之前,产生的实例,其内部指针指向的还是最初的原型对象。)

转载于:https://juejin.im/post/5accc4816fb9a028df22f4f6

你可能感兴趣的文章
我的友情链接
查看>>
802.11b网络标准
查看>>
串口编程时,出现Cannot open /dev/ttyS0 Permission denied解决
查看>>
阿里开发者们的第20个感悟:好的工程师为人写代码,而不仅是为编译器
查看>>
linux 磁盘管理
查看>>
VMWARE服务器虚拟化功能介绍
查看>>
深入搜索引擎原理
查看>>
jemalloc 内存分配管理
查看>>
mysqld源码及目录结构
查看>>
通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小。...
查看>>
Cesium入门7 - Adding Terrain - 添加地形
查看>>
kubernetets单机版安装
查看>>
MAC-mojave-关于VMware虚拟机键盘鼠标失灵解决
查看>>
我的友情链接
查看>>
2-2 中断/异常机制工作原理
查看>>
Java到底是传引用还是传值?
查看>>
RAR压缩包审计工具unrar-nofree
查看>>
什么是CSS网页切图
查看>>
ConcurrentHashMap学习
查看>>
struts2标签实例
查看>>