javascript的use strict(使用严格模式)】的更多相关文章

上一篇博文学习变量声明带var和不带的区别.搜索相关的文章. 引出了另一个概念. "use strict" 使用严格模式 对于一个使用者而不是概念研究者,我觉得没有意义争论或者讨论严格模式存在意义我只想记住他的作用是怎样的.使用他之后会怎样. 1. 怎么写? 首先严格模式可以写在整个脚本或模块中,也可以写在函数中.如果写在全局环境,可以直接在文件的第一句加入"use strict"就可以了. 但是如果这么写的话你就惨了. 假如你的文件引入其它脚本文件时. 假如其它脚…
ECMAScript5最早引入“严格模式". 使用 "use strict"开启严格模式 function test(){ "use strict"; //开启严格模式 //do something... } 在严格模式下,会加强错误检测,不规范的javascript语法不会通过检测. 变量 message="Hello"; //非严格模式,没问题.严格模式,抛出ReferenceError var message="Hell…
每种设计模式的出现都是为了弥补语言在某方面的不足,解决特定环境下的问题.思想是相通的.只不过不同的设计语言有其特定的实现.对javascript这种动态语言来说,弱类型的特性,与生俱来的多态性,导致某些设计模式不自觉的我们都在使用.只不过没有对应起来罢了.本文就力求以精简的语言去介绍下设计模式这个高大上的概念.相信会在看完某个设计模式之后有原来如此的感慨. 一.基本概念与使用场景: 基本概念: 将请求封装成对象,分离命令接受者和发起者之间的耦合. 命令执行之前在执行对象中传入接受者.主要目的相互…
接上篇命令模式来继续看下js设计模式中另一种常用的模式,策略模式.策略模式也是js开发中常用的一种实例,不要被这么略显深邃的名字给迷惑了.接下来我们慢慢看一下. 一.基本概念与使用场景: 基本概念:定义一系列方法,封装起来使他们可以相互替换.也就是将策略封装在策略类中,当发起请求时管理类将请求委托给对应策略类. 概括而言,就是讲对应不同情况的策略(即不同的处理方法)专门分装在一个对象中,即策略对象里面包含所有的策略.事件请求不直接请求该策略对象,而是有个管理对象来处理请求转发给策略对象的不同接口…
在JavaScript创建对象(二)——构造函数模式中提到,构造函数模式存在相同功能的函数定义多次的问题.本篇文章就来讨论一下该问题的解决方案——原型模式. 首先我们来看下什么是原型.我们在创建一个函数时,这个函数会包含一个属性prototype,这个属性是一个指针,它指向一个对象——该函数的原型对象,这就是原型,它包含了该函数类型的所有实例可共享的属性和方法,见下面示意图: 如图所示,声明了一个函数Person.在JavaScript中,一个函数被声明的同时就具有了一些属性,其中有一个叫做pr…
最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务端代码 (点击图片进入游戏体验) 前文链接: javascript开发HTML5游戏--斗地主(单机模式part1) javascript开发HTML5游戏--斗地主(单机模式part2) 本文章为第三部分内容,主要AI相关逻辑实现,参考文章斗地主ai设计.主要内容如下: 牌型判断 牌型分析 AI出…
最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务端代码 (点击图片进入游戏体验) 前文链接: javascript开发HTML5游戏--斗地主(单机模式part1) 本文章为第二部分内容,主要包括发牌.抢地主流程.主要内容如下: 发牌 抢地主流程 确定地主 手牌布局问题 一.发牌 发牌,就是取3张底牌,然后3个玩家各发17张牌,之前我把一副牌的信…
javascript创建对象的方法--动态原型模式 一.总结 1.作用:解决组合模式的属性和函数分离问题  2.思路:基本思路和组合模式相同:共用的函数和属性用原型方式,非共用的的函数和属性用构造函数的方式 二.javascript创建对象的方法--动态原型模式 动态原型方法 动态原型方法的基本想法与混合的构造函数原型方式相同,即在构造函数内定义非函数属性,而函数属性则利用原型属性定义. 组合模式中实例属性与共享方法(由原型定义)是分离的,这与纯面向对象语言不太一致:动态原型模式将所有构造信息都…
如果给JavaScript和angularjs代码标志为“严格模式”,则其中运行的所有代码都必然是严格模式下的.其一:如果在语法检测时发现语法问题,则整个代码块失效,并导致一个语法异常.其二:如果在运行期出现了违反严格模式的代码,则抛出执行异常. 注:经过测试IE6,7,8,9均不支持严格模式. JavaScript代码“严格模式”使用方法:严格模式需要使用字符串序列: "use strict" 在如下位置加入可以开启相应代码块中的严格模式:1.必须在全局代码的开始处加入.2.在eva…
目录 简介 使用Strict mode strict mode的新特性 强制抛出异常 简化变量的使用 简化arguments 让javascript变得更加安全 保留关键字和function的位置 总结 简介 我们都知道javascript是一个弱类型语言,在ES5之前,javascript的程序编写具有很强的随意性,我可以称之为懒散模式(sloppy mode).比如可以使用未定义的变量,可以给对象中的任意属性赋值并不会抛出异常等等. 在ES5中,引入了strict模式,我们可以称之为严格模式…
大家好!本文介绍状态模式及其在Javascript中的应用. 模式介绍 定义 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是控制一个对象状态的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化. 类图及说明 State:抽象状态 接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换 ConcreState:具体状态 每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理.通俗地说…
大家好!本文介绍迭代器模式及其在Javascript中的应用. 模式介绍 定义 提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示. 类图及说明 Iterator抽象迭代器 抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first()获得第一个元素,next()访问下一个元素,isDone()(或者为hasNext())是否已经访问到底部 ConcreIterator具体迭代器 具体迭代器角色要实现迭代器接口,完成容器元素的遍历. Aggregate抽象容器…
一.定义 装饰者模式可用来透明地把对象包装在具有同样接口的另一个对象之中.这样一来,你可以给一个方法添加一些行为,然后将方法调用传递给原始对象.相对于创建子类来说,使用装饰者对象是一种更灵活的选择(装饰者提供比继承更有弹性的替代方案). 装饰者用于通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的. 二.举例 2.1 装饰者是一种实现继承的替代方案.当脚本运行时,在子类中添加行为会影响原有类所有的实例,而装饰者却不然.取而代之的是它能给不同对象各自添加新…
一.组合模式定义及使用场景 组合模式将对象组合成树形结构,用以表示“部分—整体”的层次结构,除了用来表示树形结构之外,组合模式还可以利用对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性. 实现组合模式的关键: 在java等静态语言中,需要单个对象和组合对象都实现同样的抽象接口,对外提供同样的方法,(具有的属性可以不同哈),这可以通过抽象类或者接口来实现. 在javascript中,对象的多态性是与生俱来的,没有编译器去检查对象的类型,因此实现组合模式的要点是保证组合兑现个单个对象用…
一.命令模式使用场景及定义 命令模式常见的使用场景是:有时候需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的具体操作是什么.此时希望用一种松耦合的方式来设计程序,使得请求的发送者和请求接受者可以解除彼此之间的耦合关系. 命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分隔开.请求的一方不必知道接收请求一方的接口,更不必知道请求是怎么被接收的,以及操作是否被执行,何时被执行,以及是如何执行的. 命令模式使得请求本身成为一个对象,这个对象和其他对象一样可以被存储和…
引言 本文摘自<JavaScript设计模式与开发实践> 在现实中,很多时候也有多种途径到达同一个目的地.比如我们要去某个地方旅游,可以根据具体的实际情况来选择出行的线路. 如果没有时间但是不在乎钱,可以选择坐飞机. 如果没有钱,可以选择坐大巴或者火车. 如果再穷一点,可以选择骑自行车. 在程序设计中,我们也常常遇到类似的情况,要实现某一个功能有多种方案可以选择.比如一个压缩文件的程序,既可以选择zip算法,也可以选择gzip算法. 这些算法灵活多样,而且可以随意互相替换.这种解决方案就是本文…
函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)introduceBugs(): 这种情况下,introduceBugs()被称为回调函数(callback function)或简称为回调(callback:): function writeCode(callback) { // do something... callback(); // ... }…
先看一道JavaScript题目,据说是国内某知名互联网企业的JavaScript笔试题,如果对正则的全局匹配模式不了解的话可能会对下面的输出结果感到疑惑. var str = "123#abc"; var re = /abc/ig; console.log(re.test(str)); //输出ture console.log(re.test(str)); //输出false console.log(re.test(str)); //输出ture console.log(re.tes…
方法调用模式:函数调用模式:构造器调用模式:apply调用模式: 方法调用模式: 当一个函数被保存为对象的一个属性时,我们称它为一个方法.当一个方法被调用时,this被绑定到该对象. 函数调用模式: 以此模式调用函数时,this被绑定到全局对象.使用that方式解决: var add = function(a,b){return a+b;} var myObj = {}; myObj.double = function(){ var that = this; var helper = funct…
正则表达式最早是由 Ken Thompson 于 1970 年在他改进过的 QED 编辑器里实现的,正则里最简单的元字符 “.” 在当时所匹配的就是除换行符外的任意字符: "." is a regular expression which matches any character except <nl>. 上面这句话出自 QED 在 1970 年的官方文档,这可能是史上第一份正则文档. 为什么要这么规定?是因为 QED 是以行为单位来编辑文件的,而且行尾的换行符也算在这一…
代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>创建对象的模式</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--<l…
http://www.csdn.net/article/2013-08-12/2816527-JavaScript-Promise http://www.cnblogs.com/hustskyking/p/javascript-asynchronous-programming.html 摘要:Promises是一种令代码异步行为更加优雅的抽象,它很有可能是JavaScript的下一个编程范式,一个Promise即表示任务结果,无论该任务是否完成. 异步模式在Web编程中变得越来越重要,对于Web…
构造函数模式 实现方式: function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = function() { return this.name } } // 测试 var person = new Person('Nicholas', 29, 'Engineer'); // 检测对象类型 console.log(person.constructor ===…
方法调用模式: 当一个函数被保存为对象的一个属性时,我们称它为一个方法.当一个方法被调用时,this被绑定到该对象. //方法调用模式 var myObject = { value: 0 , increment: function(inc){ this.value += (typeof inc === 'number') ? inc :1; } }; myObject.increment(); document.writeln(myObject.value); myObject.incremen…
严格模式是干什么的?它从哪里来? ECMAScript5中引入了严格模式.它为JS定义了一种不同的解析和执行模型. 摘自阮一峰博客:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 消除JS语法的不合理之处,减少一些怪异行为 消除代码运行的一些不安全支出,保证代码安全 提高编译器效率,增加运行速度 为未来新版本的JS做好铺垫. 正所谓未雨绸缪,JS如今的发展确实是有根源的.从这里做好铺垫我们可以看到JS的野心.…
1.为什么使用严格模式? 消除javascript语法的一些不合理.不严谨之处,减少一些怪异行为: 消除代码运行的不安全之处,保证代码的运行: 提高编译效率,增加运行效率: 为未来新版本的javascript做好铺垫: 注:经过测试 IE6,7,8,9 均不支持严格模式. 2.缺点 现在网站的 JS 都会进行压缩,一些文件用了严格模式,而另一些没有.这时这些本来是严格模式的文件,被 merge 后,这个串就到了文件的中间,不仅没有指示严格模式,反而在压缩后浪费了字节.…
:Promises是一种令代码异步行为更加优雅的抽象,它很有可能是JavaScript的下一个编程范式,一个Promise即表示任务结果,无论该任务是否完成. 异步模式在Web编程中变得越来越重要,对于Web主流语言JavaScript来说,这种模式实现起来不是很利索,为此,许多JavaScript库(比如     jQuery和Dojo.AngularJS)添加了一种称为Promise的抽象(术语称作Deferred模式).通过这些库,开发人员能够在实际编程中使用Promise模式,每个Pro…
函数在Javascript里是有属性的,因为它们是一种特殊对象.事实上,就算是没有明确声明,函数在最初就已经包含了一些固有的属性,比如所有函数都length这个属性,它可以指出函数声明了多少个参数: function func(a, b, c) {} console.log(func.length); // 3   你 可以随时使用函数的属性.其中一个函数属性的用法是,把函数的返回值保存起来,方便下次执行时再使用,这就是函数的记忆模式.比如,下面的函数myFun 就声明了一个叫cache的属性,…
代理模式 1 定义 为其他对象提供一种代理以控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 2 应用举例 2.1 缓存代理 现在我们有一个可以查询城市经纬度的函数: const getLatLng = (address) => { if (address === "Beijing") { return "北京经纬度"; } else if (address === "…
定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换.目的:将算法的使用和算法的实现分离开来.比如: if(input == 'A'){ return 1; } if(input == 'B'){ return 2; } if(input == 'C'){ return 3; } //或者 switch(input){ case 'A': console.log(1); break; case 'B': console.log(2); break; case 'C': conso…