首页 > 其他分享 >【JS基础】一个数据泄露的例子

【JS基础】一个数据泄露的例子

时间:2023-06-14 22:35:46浏览次数:31  
标签:obj color JS 作用域 例子 change 全局 泄露 red

function change(obj) {
    with(obj) {
        color = 'red'
    }
}
var box = {
    size: '15*15'
}
change(box);
console.log(color);//red
with 代码块内部,每个变量首先会指向 obj 对象属性,所以color = 'red' 可以等效于obj.color = red 但是obj身上并没有color这个属性,于是去change函数的作用域寻找color但也没有找到, 最后在全局作用域没有color的情况下,于是直接设置 全局.color = 'red' 这就是数据泄漏的过程,经过一通操作,color泄露到全局   注意:需要在非严格模式下执行

标签:obj,color,JS,作用域,例子,change,全局,泄露,red
From: https://www.cnblogs.com/zjy4fun/p/17481530.html

相关文章

  • 【JS错题总结】对象属性相关
    下面代码的输出结果:varobj={brand:'apple',price:5999}Object.defineProperty(obj,'id',{value:1})Object.defineProperty(obj,'price',{configurable:false})console.log(Object.keys(obj).length);//2//apple5999f......
  • 【JS错题总结】JS中的typeof
    vartest=1.2console.log(typeoftest==='float');//falseconsole.log(typeoftest)//numbervartest2='4399'-0console.log(typeoftest2==='number')//truevarsym=Symbol(1)console.log(typeofsym==='symb......
  • 【JS基础】与或运算
    /***&&运算,如果前面值为true,则结果为后面的值。如果前面值为false,则值为前值.*||运算,如果前面值为true,则结果为前面的值,如果前面的值为false,则结果为后面的值。*/console.log(1&&2);//2console.log(2&&1);//1console.log(1||2);//1console.log(2||1);//2......
  • 【JS基础】JS中的原型和原型链
    在JavaScript中,每个对象都有一个原型(prototype)属性,它指向另一个对象。对象可以继承其原型对象的属性和方法。原型是JavaScript实现对象继承的基础概念之一,而原型链则是一种通过多层级原型连接起来的机制。每个JavaScript对象(除了null和undefined)都有一个原型对象,原型......
  • js中substring
    js中substring主要用于切割字符串,我用的很少,最近再看源码的时候看到了substring,用的也比较少,积累一下例:letstr='abcdefg'str=str.substring(4);console.log(str)//输出'efg'直接截取一个想要的长度,从开头截取,并返回一个被截取之后得的值......
  • 【JS基础】Function构造函数
    Function()构造函数创建了一个新的Function对象,直接调用构造函数可以动态创建函数,与eval(可能访问到本地作用域)不同的是,Function构造函数只创建全局执行的函数。constsum=newFunction('a','b','returna+b')console.log(sum(1,2)); 参考:Function()构造函数-J......
  • uniapp vue.config.js配置chunk-vendors.js文件拆分
    constpath=require('path')functionresolve(dir){returnpath.join(__dirname,dir);}constCompressionPlugin=require('compression-webpack-plugin')consthtmlWebpackPlugin=require('html-webpack-plugin')htmlWebpackPl......
  • 【JS错题总结】作用域链问题
    作用域链上面代码的输出是GoodbyeJack,因为执行到语句typeofname==='undefined' 的时候,函数会从内向外(作用域链)寻找该变量,从语句var name;找到该变量的定义,该变量此时的值为undefined。自执行函数解析和执行一起完成,自己有的不会再向上查找。varname='zhangsan'......
  • 【JS错题总结】node中的微任务
    答案是n1n2p1p2 原因:node中的微任务包含两部分:1.process.nextTick()注册的回调(nextTicktaskqueue)2.promise.then()注册的回调(promise taskqueue) node在执行微任务时,会优先执行nextTicktaskqueue中的任务,执行完之后接着执行promisetaskqueue......
  • SQL中json解析技巧
    比如字段var1,值是'{"a":{"b":{"c":1,"d":2}}}'大家都知道用get_json_object(var1,'$.a')可以得到'{"b":{"c":1,"d":2}}',如果要继续下挖,不需要get_json_object函数一直套可以直接按这个写法:get_json_object......