面向对象

110 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

生命不息,学习不止

题外话

人类优于其他物种的一个重要方面是人类学会了思考,所以说在人类的进化道路上,思考是举足轻重的,为了防止大家小脑袋瓜锈住,我打算每天出一道题让大家好好的思考一下。

每日一题:大家都知道我长得帅啊,那种人见人爱的帅,那么,如果我和我自己谈恋爱是算同性恋呢还是算自恋呢?

废话不多说,上货!

正文

在这里插入图片描述

with语句(不推荐使用)

with可以形成自己的作用域

let message = "Hello World"

function foo() {
    function bar() {
        console.log(message)
    }
}

//Hello World

上面这段代码会按照函数bar -> 函数foo -> global 作用域查找message这个变量。

let message = "Hello World"

let obj = {name: "obj", message: "obj message"}

function foo() {
    function bar() {
        with(obj){
            console.log(message)
        }
    }
}

// obj message

这里查找的作用域链就变成了with的参数obj -> bar -> 函数foo -> global 作用域查找message这个变量。

eval函数(不建议使用)

eval是一个特殊的函数,它可以将传入的字符串当作javaScript代码来运行

let jsString = 'console.log("eval函数");console.log("打印")'

eval(jsString)

//eval函数
//打印
  • 不建议再开发中使用eval
    • eval代码的可读性非常差
    • eval是一个字符串,那么有可能在执行的过程中被刻意篡改,那么可能会造成被攻击的风险。
    • eval的执行必须经过js解释器,不能被js引擎优化。

严格模式

  • 禁止意外创建全局变量
  • 不允许函数有相同的参数名称
  • 静默错误 true.name = "abc"
  • 不允许使用原先的八进制格式
  • 不允许使用with
  • eval函数不会向上引用变量
  • 严格模式下this的指向
    • 自执行函数(默认绑定)会指向undefined

下一篇我们继续讲达梦数据库触发器以及触发器的使用。

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述