作用域链,原型链

作用域和作用域链

作用域:全局作用域;函数作用域

全局作用域:window保存全局变量
函数作用域:保存局部变量(形参和函数内var声明)

全局作用域可重用,但极易容易被污染;
局部作用域不可重用,仅保存在函数内部使用,不会被污染

函数作用域对象原理:
1)函数作用域对象仅在函数被调用时临时创建,用来保存函数内的局部变量
2)当函数调用完毕后,函数作用域对象和局部变量开始释放

作用域链(scope chain/scopes): 保存一个函数可用的所有作用域对象的链式结果(好友列表)学名就叫作用域链。作用域链保存着一个函数可用的所有变量,作用域链控制着变量的使用顺序——先局部后全局。

原型对象:为所有子对象保存共有成员‘

类:由构造函数constructor和某个类的原型对象组成

原型链::保存着一个对象可用的所有属性和方法,控制着属性和方法的使用顺序:先自有后共有,就近一致。

在这里插入图片描述
构造函数的子对象直接使用原型对象的属性和方法就叫做继承。
所有内置对象的原型对象中,已经重写了适合其子对象的方法(例如:toString方法)
重写:在子对象中定义一个和父对象中成员(方法/属性)相同的成员。

举例:为自定义类型重写(override) toString()方法

//先写一个构造函数
function Student(sname,sage){
	this.sname = sname;
	this.sage = sage;
}

//开始override
Student.prototype.toString=function(){
	return `{
		学生姓名:${this.sname},
		学生年龄:${this.sage}
		}
	`
//override结束

//调用前要创建构造函数student的子对象
var hmm = new Student("Hanmeimei",16);

//调用新写的toString()方法
console.log(hmm.toString());
//结果:
	{
	学生姓名:Hanmeimei,
	学生年龄:16
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值