前端学习之JavaScript 面向对象和如何开启严格模式

面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现, 使用的时候再一个一个的依次调用就可以了。
面向对象 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。

面向过程与面向对象对比

面向过程
优点
性能比面向对象高,适合跟 硬件联系很紧密的东西,例 如单片机就采用的面向过程 编程。
缺点
不易维护、不易复用、不易扩展
面向对象
优点
易维护、易复用、易扩展,由于面向对象有 封装、继承、多态性的特性,可以设计出低 耦合的系统,使系统 更加灵活、更加易于维 护.
缺点
性能比面向过程低

函数的定义方式

  1. 方式1 函数声明方式 function 关键字 (命名函数)
    function fn(){}
  2. 方式2 函数表达式(匿名函数)
    var fn = function(){}
  3. 方式3 new Function()
    var f = new Function(‘a’, ‘b’, ‘console.log(a + b)’); f(1, 2); var fn = new Function(‘参数1’,‘参数2’…, ‘函数体’)

函数的调用

/* 1. 普通函数 */ 
function fn() { console.log('人生的巅峰'); }fn(); 
/* 2. 对象的方法 */ 
var o = { sayHi: function() { console.log('人生的巅峰'); } }o.sayHi(); 
/* 3. 构造函数*/ 
function Star() {}; new Star(); 
/* 4. 绑定事件函数*/ 
btn.onclick = function() {}; // 点击了按钮就可以调用这个函数 /* 5. 定时器函数*/
 setInterval(function() {}, 1000); 
 /* 6. 立即执行函数(自调用函数)*/ 
 (function() { console.log('人生的巅峰'); })();

this的指向

this的指向

改变函数内部 this 指向

call方法
call()方法调用一个对象。简单理解为调用函数的方式,但是它可以改变函数的 this 指向 应用场景: 经常做继承

apply方法 apply() 方法调用一个函数。简单理解为调用函数的方式,但是它可以改变函数的 this 指 向。应用场景: 经常跟数组有关系
bind() 方法不会调用函数,但是能改变函数内部this 指向,返回的是原函数改变this之后产 生的新函数 如果只是想改变 this 指向,并且不想调用这个函数的时候,可以使用bind 应用场景:不调用函数,但是还想改变this指向

call、apply、bind三者的异同
共同点 : 都可以改变this指向
不同点: call 和 apply 会调用函数, 并且改变函数内部this指向. call 和 apply传递的参数不一样,call传递参数使用逗号隔开,apply使用数组传递 bind 不会调用函数, 可以改变函数内部this指向
应用场景 1. call 经常做继承. 2. apply经常跟数组有关系. 比如借助于数学对象实现数组最大值最小值 3. bind 不调用函数,但是还想改变this指向. 比如改变定时器内部的this指向.

严格模式

JavaScript 除了提供正常模式外,还提供了严格模式(strict mode)。ES5 的严格模式 是采用具有限制性 JavaScript变体的一种方式,即在严格的条件下运行 JS 代码。 严格模式在 IE10 以上版本的浏览器中才会被支持,旧版本浏览器中会被忽略。 严格模式对正常的 JavaScript 语义做了一些更改:
1.消除了 Javascript 语法的一些不合理、不严谨之处,减少了一些怪异行为。
2.消除代码运行的一些不安全之处,保证代码运行的安全。
3.提高编译器效率,增加运行速度。
4.禁用了在 ECMAScript 的未来版本中可能会定义的一些语法,为未来新版本的 Javascript 做好铺垫。比如一些保留字如:class,enum,export, extends, import, super 不能做变量名

开启严格模式

严格模式可以应用到整个脚本或个别函数中。因此在使用时,我们可以将严格模式分为 为脚本开启严格模式和为函数开启严格模式两种情况。
情况一 :为脚本开启严格模式
有的 script 脚本是严格模式,有的 script 脚本是正常模式,这样不利于文件合并,所以可以将整个脚本文件放在一个立即执行的匿名函数之中。这样独立创建 一个作用域而不影响其他 script 脚本文件。
情况二: 为函数开启严格模式
要给某个函数开启严格模式,需要把“use strict”; (或 ‘use strict’; ) 声明放在函数体所有语句之前。

严格模式中的变化

严格模式后不能使用未声明的变量
严格模式不允许删除变量
严格模式下全局作用域中函数中的 this 是 undefined
严格模式下,如果构造函数不加new调用, this 指向的是undefined。
如果给他赋值则会报错
严格模式下,定时器 this 还是指向 window
更多特性可以点击这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值