JavaScript严格模式下this指向

一般认为:严格模式下this不允许指向全局对象。

如:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

需要说明的是:本身指向全局的this是没有问题的

示例代码:

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>严格模式下this指向</title>
    </head>

    <body>
        <script type="text/javascript">
            ‘use strict‘;
            console.log(this);
        </script>
    </body>

</html>

控制台输出为window对象(全局对象)

严格模式下this不允许指向全局对象是指在函数内部,如下示例代码:

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>严格模式下this指向</title>
    </head>

    <body>
        <script type="text/javascript">
            ‘use strict‘;

            function F() {    
                this.a = 1;   //这种指向全局的this不对
            };
            F();
        </script>
    </body>

</html>

控制台输出报错:

时间: 2024-11-17 02:16:35

JavaScript严格模式下this指向的相关文章

javascript严格模式下的8点规则

[作用] [1]消除js语法的一些不合理.不严谨.不安全问题,减少怪异行为并保证代码运行安全 [2]提高编译器效率,增加运行速度 [使用] [1]整个脚本启用严格模式,在顶部执行:"use strict"; [2]在指定函数中执行严格模式,在函数体第一行:"use strict" [3]不支持strict模式的浏览器把"use strict"当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式 [4]支持严格模式的浏览器包括

246 JavaScript严格模式

3.1 什么是严格模式 JavaScript 除了提供正常模式外,还提供了严格模式(strict mode). ES5 的严格模式是采用具有限制性 JavaScript变体的一种方式,即在严格的条件下运行 JS 代码. 严格模式在 IE10 以上版本的浏览器中才会被支持,旧版本浏览器中会被忽略. 严格模式对正常的 JavaScript 语义做了一些更改: 1.消除了 Javascript 语法的一些不合理.不严谨之处,减少了一些怪异行为. 2.消除代码运行的一些不安全之处,保证代码运行的安全.

Javascript 严格模式详解

Javascript 严格模式详解 作者: 阮一峰 日期: 2013年1月14日 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立"严格模式"的目的,主要有以下几个: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全: - 提高编译器效率,增加运行速度

JavaScript 严格模式介绍

如我们所知,JavaScript 是一门灵活的语言.其灵活性同样也带来了很多坑,当然也有一些是设计缺陷.比如 一个变量没有声明就赋值,默认是全局变量,如 (function () { a = 3; })(); console.log(window.a); // 输出3 对象有多个重名属性,最后赋值的那个属性会覆盖前面的值.如 var obj = { c: 3, c: 4 } // obj 为 {c:4} 还有什么== , typeof 之类的坑,数不胜数.毕竟 JavaScript 之父设计这门

Javascript原型模式总结梳理

在大多数面向对象语言中,对象总是由类中实例化而来,类和对象的关系就像模具跟模件一样.Javascript中没有类的概念,就算ES6中引入的class也不过是一种语法糖,本质上还是利用原型实现.在原型编程语言中,类并不是必需的,对象不一定需要由类实例化而来,而是通过克隆另外一个对象来得到. 原型模式是用来创建对象的一种模式.在以类为中心的语言中,要创建一个对象首先要指定这个对象的类型,然后实例化一个对象.使用原型模式创建对象时不必关心对象的具体类型,而是找到一个对象,然后通过克隆来创建一个一模一样

javascript单体模式

单体模式的思想在于保证一个特定类仅有一个实例.这意味着当第二次使用同一个类创建的新对象的时候,应该得到与第一个所创建的对象完全相同. javacript中并没有类,因此对单体咬文嚼字的定义严格来说并没有意义.但是javascript具有new语法可使用构造函数来创建对象,而且有时需要使用这种语法的单体实现.这种思想在于当使用同一个构造函数以new操作符来创建多个对象时,应该仅获得指向完全相同的对象的新指针. 下面的代码显示了其预期行为: var nui = new Universe(); var

JavaScript 严格模式

! function () { var /* */testA = function () { ; console.log( this ) } , testB = function () { "use strict" ; console.log( this ) } ; testA() // 输出window ; testB() // 输出undefined 严格模式下 this 不能指向全局 ; testA.call('test') // 转换成包装类型 ; testB.call('te

JavaScript严格模式

"use strict" 指令 "use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增.它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略."use strict" 的目的是指定代码在严格条件下执行.严格模式下你不能使用未声明的变量. 严格模式声明 严格模式通过在脚本或函数的头部添加 "use strict"; 表达式来声明.大家可以通过浏览器的F

[转]Javascript 严格模式详解

原文地址:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立"严格模式"的目的,主要有以下几个: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安