js with()

with

with加一个对象参数 会把这个对象当做with圈定代码体作用域的最顶端,会改变作用域
字符串参数 ?
就是把参数对象作为AO对象(执行期上下文)

改变作用域 会改变作用域链 系统内核会消耗大量的效率去改变作用域链 程序会变的非常慢的

es5 为了提升效率 禁用了with (在严格模式下)

var obj = {
	name:"obj"
}
var name = "window";
var ff= "window_ff";

function test(){
	var name = "test";
	var age = 'testage'
	with(obj){
		console.log(name);// 'obj'
		console.log(age);//  'testage'
		console.log(ff);// "window_ff"
	}
}
test()

document

with(document){
	write('document with')
}

在这里插入图片描述

作用 简化代码

var obj = {
	dep1:{
		name:{
			handle:{
				name:"fff",
				age:18
			}
		}
	},
	dep2:{...}
}

// 直接访问handle属性
with(obj.dep1.name.handle){
	console.log(name) // 'fff'
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值