JavaScript 设计风格&模式 概览 20140418
基本的概念
在JavaScript中,一旦定义好一个变量,该变量会自动成为内置对象的一个属性,
(如果该变量是全局变量,那么会成为全局对象的一个属性)。
定义的变量实际上也是一个伪类,拥有自身的属性,
该属性决定了该变量是否可以被修改、被删除和使用for-in枚举,
在ES3中没有直接对外提供,在ES5中提供了进行操纵这些属性的方法。
ES5新增了strict模式,该模式表明从JavaScript中移除某些特性。
该模式通过一个普通的字符串"use strict"来触发。
隐含全局变量和明确定义全局变量的区别
使用var创建的全局变量不能使用delete删除。
不使用var创建的隐含全局变量可以使用delete删除,实际上是申明了上下文对象的一个属性。
实际上是通过ES3称为DontDelete,ES5称为Configurable的特性来描述该变量是否可以被删除。
隐含全局变量严格来讲不是真正的变量,而是全局对象的属性,属性可以通过delete操作符删除。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8"></meta>
<script type="text/javascript">
var g_var1 = 1;
g_var2 = 2;
(function(){
g_var3 = 3;
});
delete g_var1;
delete g_var2;
delete g_var3;
console.log(typeof g_var1); // number
console.log(typeof g_var2); // undefined
console.log(typeof g_var3); // undefined
</script>
</head>
<body></body>
</html>
如果直接将如上的代码放在FireBug下测试会有不同的结果,切记FireBug不能完全模拟执行环境。
具体的关于delete操作符的更多详细信息,参考 未完成 。
使用字面量或内置构造函数创建对象
最简单的字面量{}对象也具有Object.prototype继承的属性和方法。
通过Object构造函数创建的对象,在创建的时候存在一个作用域解析的问题,
解析器要从调用Object()的位置开始沿着作用于链向上查找Object构造函数,存在效率问题。
当用new操作符调用构造函数时,构造函数总是返回一个对象,默认是返回this指向的对象,
除非通过return返回一个其他对象(若return返回的不是对象,则返回的还是this)。
JavaScript 设计风格&模式 概览 20140418的更多相关文章
- javascript运行模式:并发模型 与Event Loop
看了阮一峰老师的JavaScript 运行机制详解:再谈Event Loop和[朴灵评注]的文章,查阅网上相关资料,把自己对javascript运行模式和EVENT loop的理解整理下,不一定对,日 ...
- Javascript原型模式总结梳理
在大多数面向对象语言中,对象总是由类中实例化而来,类和对象的关系就像模具跟模件一样.Javascript中没有类的概念,就算ES6中引入的class也不过是一种语法糖,本质上还是利用原型实现.在原型编 ...
- JavaScript严格模式详解
转载自阮一峰的博客 Javascript 严格模式详解 作者: 阮一峰 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict m ...
- (转)深入理解JavaScript 模块模式
深入理解JavaScript 模块模式 (原文)http://www.cnblogs.com/starweb/archive/2013/02/17/2914023.html 英文:http://www ...
- JavaScript严谨模式(Strict Mode)
下面的内容翻译自It’s time to start using JavaScript strict mode,作者Nicholas C.Zakas参与了YUI框架的开发,并撰写了多本前端技术书籍,在 ...
- 深入理解JavaScript 模块模式
http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html 模块模式是JavaScript一种常用的编码模式.这是一般的 ...
- Javascript编程模式(JavaScript Programming Patterns)Part 1.(初级篇)
JavaScript 为网站添加状态,这些状态可能是校验或者更复杂的行为像拖拽终止功能或者是异步的请求webserver (aka Ajax). 在过去的那些年里, JavaScript librar ...
- (" use strict")Javascript 严格模式详解
Javascript 严格模式详解 转载别人的博客内容,浏览了一遍,没有全部吸收,先保存一下链接 http://www.ruanyifeng.com/blog/2013/01/javascript_s ...
- JQuery日记6.5 Javascript异步模式(一)
理解力JQuery前实现异步队列,有必要理解javascript异步模式. Javascript异步其实并不严重格异步感,js使某些片段异步方式在将来运行,流不必等待继续向下进行. 在多线程的语言中最 ...
随机推荐
- Cocos2d-x 学习资料收集
框架源代码: http://code.google.com/p/cocos2d-x/downloads/list 搭建环境 http://blog.csdn.net/ccf19881030/artic ...
- Access restriction:The type JPEGCodec is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
解决方法: Project -> Properties -> libraries, 先remove掉JRE System Library,然后再Add Library重新加入. ===== ...
- ExtJs中处理时间,出现NaN-NaN-NaN的解决方式
关键字: extjs日期格式问题(二) 一般我们的前台代码Ext.grid.ColumnModel里会这样写,以便显示日期格式: Js代码 1..... 2.{header:"birth ...
- Object-C添加方法
给实例变量添加getter方法: #import <Cocoa/Cocoa.h> @interface Photo:NSObject { NSString *caption; NSStri ...
- 1 Yoga3 系统装机总结.
1- Yoga 3 存在串口驱动不安装, 那么触摸屏不能用的情况, 打破了以往对触摸屏-"纯外设" 的设想, 与系统有关!!! 2- 系统安装总结: 1) BIOS中设置UEFI ...
- c#数组的交集,差集,并集
, , , , }; , , , , }; // 差集 var z1 = x.Except(y); foreach (var i in z1) { Console.Write(i + " & ...
- 朋友的礼物(英雄会,csdn,高校俱乐部)信封问题,匹配模型
前言: 首先这是一题解,但是重点最代码之后,有耐心的可以直接从代码后看. 上题目:n个人,每个人都有一件礼物想送给他人,他们决定把礼物混在一起,然后每个人随机拿走一件,问恰好有m个人拿到的礼物恰好是自 ...
- 祭奠一年前写 Direct2D demo
一年前, 用Direct2D实现了不怎么样的UI库. 用不怎么样的UI库实现了这个Demo. 当时放进某群共享, 以此装逼. 今天无意中翻出来, 解压, 什么都没变, 还是压缩前的模样. 不经意看见被 ...
- Android Studio中JNI -- 2 -- 编写c文件
继上一篇,我们在native接口中编写了2个方法 生成的相应.h文件 这时,需要我们自己去完善.c文件 /* DO NOT EDIT THIS FILE - it is machine generat ...
- 无线端web开发学习总结
无线web开发之前要做一些准备工作:一.必需的reset样式库1.其中的重点是盒模型box-sizing:由原来pc端的content-box改为border-box. *, *:before, *: ...