原型、原型链与闭包、继承

本文深入探讨JavaScript中的核心概念,包括原型机制,详细阐述了对象的隐式原型__proto__与构造函数的显示原型prototype之间的关系,以及如何通过原型链实现继承。同时,解释了闭包的特点和作用,如创建局部作用域、访问内部变量,并提醒了不当使用可能导致的内存泄漏问题。最后,介绍了JavaScript中的继承实现,包括类的extends关键字、构造函数继承和原型链继承策略。
摘要由CSDN通过智能技术生成

原型:

概念

每个构造函数(类)都有一个现实原型prototype

每个实例(对象)都有一个隐式原型__proto__

对象的隐式原型__proto__等于其构造函数的显示原型prototype

当查找对象的属性或方式,先在自身是,找不到则沿着原型(__proto__.__proto__)向上查找

原型链:

我们把原型的原型形式的链条关系称为原型链

作用

实现了js的继承;可以给所有的类的实例添加公用方法和属性

闭包:

特点:函数嵌套函数,函数作为返回值被返回 函数作为参数被传入

闭包的作用:创建局部作用域;在函数外部访问函数内部的局部变量;封装各种插件

缺点:闭包中的自由变量不会被自动销毁,会常驻内存,使用不当容易造成内存泄漏

闭包中的自由变量(在该作用域没有定义就使用的变量)在函数定义时候确定的,不是函数执行时候确定的

 function outer(){
 	var a = 100;
		return function(){
		a++;
		console.log(a);
	}
 }
 var inner = outer();
 inner()





function outer(fn){
fn():函数作为参数被传入
}

继承:

class类可以用extends关键字实现继承

函数类继承

继承构造函数:

function Student(name,age,no){
Animal.call(this,name,age)
}

继承原型

Student.prototype=Object.create(Animal.prototype)

修正构造函数

Student.prototype.constructor=Stuent;

自定义Student扩展方法

Student.prototype.study=function(){}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值