web学习笔记(三十三)

news2025/1/16 21:16:54

目录

1.严格模式

1.1严格模式的概念:

1.2严格模式在语义上更改的地方:

1.3如何开启严格模式 

1.4严格模式应用上的变化 

2.原型链


1.严格模式

1.1严格模式的概念:

      严格模式有点像es5向es6过渡而产生的一种模式,因为es6的语法要求都比较严格,而我们在es5的代码编写过程中使用严格模式会使得我们的代码更加规范,但并不是所有的浏览器都支持严格模式,只有在IE10以上版本的浏览器才会支持严格模式。

1.2严格模式在语义上更改的地方:

严格模式对正常的 JavaScript 语义做了一些更改:

  1. 消除了 Javascript 语法的一些不合理、不严谨之处,减少了一些怪异行为。
  2. 消除代码运行的一些不安全之处,保证代码运行的安全。
  3. 提高编译器效率,增加运行速度。
  4. 禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来新版本的 Javascript 做好铺垫。比如一些保留字如:class,enum,export, extends, import, super 不能做变量名

1.3如何开启严格模式 

"use strict" //开启严格模式,
//或者在函数内部
function(){
"use strict" //需要写在函数体内所有语句之前
}

如果将该语句直接写在script标签内部则表示开启全局严格模式。如果是写在函数内部,则表示在函数作用域内编写的代码开启严格模式。 

1.4严格模式应用上的变化 

(1)未声明的变量直接赋值输出会报错。(普通模式下不会报错,会将变量前面默认加上window然后将变量升为全局变量,可以在控制台输出变量的值)

    "use strict" //开启严格模式,如果写在函数体内部则表示只有函数内部开启严格模式。
         a = 10;
        console.log(a);//严格模式之前可以输出a的值,现在会直接报错。 

(2)不允许删除变量 (普通模式下变量没有真的被删除,但是也不会报错)

  "use strict" //开启严格模式,如果写在函数体内部则表示只有函数内部开启严格模式。 
        var b = 1;
         delete b;//严格模式下不可以删除变量,会直接报语法错误。

 (3)函数的this指向是undefined(普通模式下,普通函数的this指向window)

    <script>
      "use strict" //开启严格模式,如果写在函数体内部则表示只有函数内部开启严格模式。
        function fn() {
            console.log(this); //严格模式下函数内this指向undefined
        }
        fn();
    </script>

(4) 构造函数不加new调用,指向结果为undefined,(普通模式下,如果构造函数不使用 new 调用,this 的指向将取决于调用上下文。在非严格模式下,如果没有使用 new,而是将构造函数作为普通函数进行调用,this 会指向全局对象(在浏览器环境中是 window 对象)。)

'use strict';

        function Person(name) {
            this.name = name;
        }
        var person1 = new Person('Alice');
        console.log(person1.name); // 输出 "Alice"
        var person2 = Person('Bob'); // 没有使用 new 关键字调用构造函数  此时由于没有使用 new 关键字,this 被设置为 undefined。在这种情况下,尝试给 undefined.name 赋值会导致报错,因为 undefined 没有 name 属性。
        console.log(person2); // 输出 undefined

 (5)无论是不是在严格模式下,定时器的this指向都是window。

setTimeout(function() {
  console.log(this); //严格模式下,定时器 this 还是指向 window
}, 2000);  

2.原型链

  <script>
        // 父亲 (构造函数)
        function Person(name, age) {
            this.name = name;
            this.age = age;
            this.say = function () {
                console.log('say  person');
            }
        }
        // Person.prototype是原型对象  是一块空间 母亲  有 construtor属性和 __proto__属性
        Person.prototype.say = function () {
            console.log('asy');
        }
        Person.prototype.walk = function () {
            console.log('walk');
        }
        // 孩子 实例对象 有 construtor属性和 __proto__属性
        var p1 = new Person('TOM', 20);
        var p2 = new Person('JACK', 22);
        console.log(p1);

        p1.say();
        p2.say();
    </script> 

可以简单的理解为构造函数类似于父亲的角色,原型对象类似于母亲的角色,而实例对象类似于孩子的角色。 

 父亲(构造器)有prototype 属性,父亲(构造器)可以通过prototype 属性查找到母亲(原型对象)。

母亲(原型对象)有 construtor(构造器)属性和 __proto__(隐式原型)属性,母亲可以通过construtor属性来查找到父亲(构造函数)。同时可以通过 __proto__(隐式原型)属性来查找到父级函数的原型对象,而父级函数的隐式对象再通过 __proto__(隐式原型)属性网上查找又可以找到上一级函数的原型对象,直到找到最顶部的原型对象,此时再向上查找的结果就是null。

孩子(实例对象)有 construtor(构造器)属性和 __proto__(隐式原型)属性,孩子可以通过 __proto__(隐式原型)属性查找到母亲(原型对象),然后再通过 construtor(构造器)属性查找到父亲(构造函数)或__proto__(隐式原型)属性查找到上级母亲(原型对象)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1519056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

密码保护小贴士:如何应对常见的网络钓鱼攻击?

网络钓鱼攻击是一种常见的网络欺诈手段&#xff0c;针对个人隐私和财产安全构成威胁。以下是一些密码保护的小贴士&#xff0c;帮助您应对常见的网络钓鱼攻击&#xff1a; 1.谨慎点击链接&#xff1a;收到来历不明的邮件、短信或社交媒体消息时&#xff0c;不要轻易点击其中的…

案例分析篇09:Web架构设计相关20个考点(7~11)(2024年软考高级系统架构设计师冲刺知识点总结)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

深度学习 精选笔记(11)深度学习计算相关:GPU、参数、读写、块

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

PS学习 - 抠图-通道

抠出蝴蝶 1.通道抠图 套索工具 这里需要圈住你要的&#xff0c;注意尽量小点 ctrl j 复制 然后去掉背景 点击通道 找到明暗对比最大的通道&#xff0c;这里我理解为颜色反差最大的那个&#xff0c;突出你要抠的东西 搜了下说是一般为蓝色 复制通道 ctrll调出色阶 通过移…

前端:pre实现JSON格式化和搜索词高亮

产品功能 最终结果如下图所示&#xff0c;将获取到的json数据格式化&#xff0c;并且在搜索时&#xff0c;将搜索的关键词高亮。 实现 HTML <!-- 搜索框 --> <el-input class"input" v-model"searchjsonValue" change"searchJSON" p…

【Linux】Centos7安装Nginx1.21.6

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件( IMAP/POP3)代理服务器。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好&#xff0c;中国大陆使nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。 …

Android Gradle 编译过程中的优化

} 但是反射没有办法能很好的识别&#xff0c;所以如果代码中有使用反射需要自行处理&#xff0c;以免被删除。 shrink resource 功能 shrink code流程执行完后删除了无用的代码后&#xff0c;就能确认哪些资源文件没有使用&#xff0c;shrink resource流程就是确定哪些资源…

人工智能(AI)+、+了什么?互联网+又是什么?

引言 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;&#xff0c;作为一门迅猛发展的领域&#xff0c;自20世纪中叶以来一直在不断演进。它涉及计算机科学、机器学习和模式识别等多个学科&#xff0c;旨在开发可以模拟和执行人类智力任务的系统。…

Unity PS5开发 天坑篇 之 DEVKit环境部署与系统升级02

上一篇各位大神们已经收到了SONY官方免费寄送的PS5开发机与测试机&#xff0c;恭喜大家成为SONY的开发者, 本篇继续PS5开发机的部署与开发套件使用。 一, PC安装PS5 SDK与系统升级 1. PC/PS5 SDK Manager下载安装包 登录开发者账号后&#xff0c;Development->Resources&a…

bdd100k数据集格式转coco格式

最近在学习使用mmdetection&#xff0c;需要使用bdd100k数据集来训练网络&#xff0c;但是官网下载的数据集格式不是coco数据集&#xff0c;得自己转换数据集格式。 文章目录 一、bdd100k数据集下载二、bdd100k转coco脚本下载三、脚本使用报错 一、bdd100k数据集下载 数据集下…

单片机卡死的几大原因、分析、解决

阅读引言&#xff1a; 本文我想给大家分享一下我在学习过程中遇到的以及了解到的一些导致单片机运行卡死&#xff08;死锁&#xff09;的一些常见原因和解决办法&#xff0c; 请注意&#xff0c; 只是列举&#xff0c;并不是全部&#xff0c; 因为导致单片机运行卡死的原因无穷…

三款内衣洗衣机的顶级较量:希亦、小吉、由利,谁才是性价比之王?

洗衣机在我们的生活中可谓是非常常见的了&#xff0c;几乎每家每户都具备着一台。即便是有洗衣机&#xff0c;也有不少人不会将自己我贴身衣物直接扔在洗衣机里清洗&#xff0c;而是会自己手工手洗。这跟我们传统上的观念有很大的关系&#xff0c;认为把内衣、内裤等贴身衣物放…

MongoDB实战面试指南:常见问题一网打尽

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! MongoDB是一款流行的非关系型数据库&#xff0c;以其高效、可扩展的特性受到开发者的青睐。了解MongoDB的架构、存储引擎和数据结…

【C++】手撕vector类(从会用到理解)

一、标准库中的vector类 1.1 vector类介绍 1.2 vector的常用接口 1.2.1 常用的构造函数 1.2.2 容量操作接口 &#xff08;1&#xff09;size &#xff08;2&#xff09;capacity &#xff08;3&#xff09;empty &#xff08;4&#xff09;resize &#xff08;5&#…

ACM记忆化DFS与基于优先队列的BFS

基本概念--记忆化DFS 使用数组保存已经算出来的值&#xff0c;在后续的计算中减少大量的重复计算&#xff0c;提高效率。&#xff08;用于dp不方便&#xff0c;但是搜索方便的情况&#xff0c;可以提升效率。&#xff09; eg. 记忆化dfs求解斐波那契数列 int dfs(int n) {if…

常州不大创造神话!常州股票开户佣金最低多少!股票开户佣金最低是多少?

股票操作准则是指在进行股票交易时遵循的一些基本原则和规范。以下是一些常见的股票操作准则&#xff1a; 量力而行&#xff1a;要根据自己的经济实力和风险承受能力选择适合自己的股票操作方式&#xff0c;不要盲目追求高回报而忽视风险。 分散投资&#xff1a;将资金分散投资…

力扣46. 全排列

Problem: 46. 全排列 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 回溯可以理解为是在对一个多叉树的操作 1.回溯结束条件&#xff1a;当决策路径的长度等于nums数组的长度时&#xff0c;将当前的结果添加到二维结果集res中&#xff1b; 2.每一次决策的选择处…

市场广泛看好的LaunchPad 平台 PenPad,有望在牛市胜出?

随着 ETF 效应下&#xff0c;推动比特币不断突破前高&#xff0c;这也进一步推动市场走向牛市。事实上&#xff0c;在每一轮牛市行情中&#xff0c;都会涌现出大量的新项目&#xff0c;并伴随大量的资产面向市场&#xff0c;而如何帮助这些资产、项目实现更好的启动变得尤为关键…

【深度学习笔记】10_10 束搜索beam-search

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 10.10 束搜索 上一节介绍了如何训练输入和输出均为不定长序列的编码器—解码器。本节我们介绍如何使用编码器—解码器来预测不定长的序…

记一次Spring事务失效的发现与解决过程

一、事情起因是这样的 首先&#xff0c;我们是使用Spring mybatis 进行开发。 某功能在测试环境看到报错日志&#xff0c; 但是数据库里面的数据发生了变化&#xff0c;没有回滚。 执行数据库update 操作的方法上明确有 Transactional(rollbackFor Exception.class)的注解。…