概述
对于js中的with,在with语句代码块的内部,每个变量首先被认为是一个局部变量,如果在局部环境中找不到某变量则会在与with相关联的对象上查找同名属性,
如果找到了同名属性则用与with相关联的对象上同名属性的值来初始化该变量。这样有时会导致程序出错
例如:
var W = function( ){
}
W.prototype.s = null
W.prototype.setText = function ( text ) {
W.prototype.s = text
}
W.prototype.show = function () {
console.log( W.prototype.s )
}
var w = new W( )
function foo( info ) {
//var w = new W( )
with(w){
setText( info )
// show()
}
}
foo("con")
w.show()
W.prototype.info = "hello"
foo("con")
w.show()
上面代码中的foo( info )函数内有 setText( info ),原本是打算用foo()函数的参数为setText( info )传参的,但由于W.prototype.info = "hello", W原型对象上已经有了info 属性,
因此在with代码块内找不到info变量时,使用了与info同名的info 属性的值为其赋值了。所以代码末尾的w.show()输出了hello
参考 js高级教程
effictive js
最后
以上就是粗心钢笔为你收集整理的js中使用with可能导致程序出错的全部内容,希望文章能够帮你解决js中使用with可能导致程序出错所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复