我是靠谱客的博主 粗心钢笔,最近开发中收集的这篇文章主要介绍js中使用with可能导致程序出错,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对于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可能导致程序出错所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部