eval 函数
- 作用:把字符串转换为js的代码
new Function("字符串"); //把字符串转换为js的代码
- 区别:
Function:当函数调用的时候才会执行
eval:立刻执行
- 使用建议:不推荐使用(js是词法作用域,eval和with可以动态的调整[破坏]js的词法作用域),性能不好。
- 场景:页面中接收用户的js代码 + json处理
<script>
//把JSON数据转换为对象
var obj = JSON.parse("{\"name\":\"默默的备胎\"}");
console.log(obj);
//把对象转换为json数据
var str = JSON.stringify(obj);
console.log(str);
</script>
<script>
var jsonStr = "{\"name\":\"默默的备胎\"}";
//json--->对象
eval("var o =" +jsonStr);
console.log(o);
var obj = eval("(" + jsonStr +")");
console.log(obj);
</script>
with
- 作用:把对象的作用域引申到{}中,达到缩减代码的目的
- 应用场合:在写代码的时候,要写很长的前缀.对象.属性.属性.属性
- 具体的使用注意:
01 在{}中不能使用无前缀的方式来增加属性
02 this应该是谁? window
03 严格模式下,with被禁止使用了
- 使用建议:不建议使用
<script>
var obj ={
name:"默认的名称",
age:20,
des:"描述信息"
};
obj.name = "李四";
obj.age = 100;
obj.des = "是的放假了是放假";
with (obj)
{
//在{}中可以使用无前缀的方式来修改属性
name = "默认的名称+1";
age = 101;
des = "测试"
}
console.log(obj);
</script>
<script>
window.onload = function(){
//01 获得指定的标签
var div = document.getElementById("divID");
//02 设置样式
// div.style.height = "100px";
// div.style.width = "200px";
// div.style.backgroundColor = "red";
// div.style.border = "2px solid #ddd";
// with (div.style)
// {
// height = "80px";
// width = "300px";
// backgroundColor = "red";
// border = "2px solid #ddd";
// }
//推荐的替换写法 即时调用函数
(function(t){
t.height = "600px";
t.width = "400px";
t.backgroundColor = "red";
t.border = "2px solid #aaa";
var b = "demo01";
})(div.style)
}
</script>
<script>
var obj = {
name:"名称",
age:33,
color:"red",
className:"修仙01",
number:2017
}
//尝试使用with来设置属性
with (obj)
{
//修改属性的值
name = "李四";
//新增属性
obj.des = "我是des";
console.log(this);
}
console.log(obj);
</script>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。