zoukankan      html  css  js  c++  java
  • JavaScript 设计风格&模式 概览 20140418

    基本的概念

    在JavaScript中,一旦定义好一个变量,该变量会自动成为内置对象的一个属性,
    (如果该变量是全局变量,那么会成为全局对象的一个属性)。

    定义的变量实际上也是一个伪类,拥有自身的属性,
    该属性决定了该变量是否可以被修改、被删除和使用for-in枚举,
    在ES3中没有直接对外提供,在ES5中提供了进行操纵这些属性的方法。

    ES5新增了strict模式,该模式表明从JavaScript中移除某些特性。
    该模式通过一个普通的字符串"use strict"来触发。

    隐含全局变量和明确定义全局变量的区别

    使用var创建的全局变量不能使用delete删除。
    不使用var创建的隐含全局变量可以使用delete删除,实际上是申明了上下文对象的一个属性。
    实际上是通过ES3称为DontDelete,ES5称为Configurable的特性来描述该变量是否可以被删除。

    隐含全局变量严格来讲不是真正的变量,而是全局对象的属性,属性可以通过delete操作符删除。

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta http-equiv=Content-Type content="text/html;charset=utf-8"></meta>
     5     <script type="text/javascript">
     6     var g_var1 = 1;
     7     g_var2 = 2;
     8     (function(){
     9     g_var3 = 3;
    10     });
    11     delete g_var1;
    12     delete g_var2;
    13     delete g_var3;
    14     console.log(typeof g_var1); // number
    15     console.log(typeof g_var2); // undefined
    16     console.log(typeof g_var3); // undefined
    17     </script>
    18 </head>
    19 <body></body>
    20 </html>

    如果直接将如上的代码放在FireBug下测试会有不同的结果,切记FireBug不能完全模拟执行环境。
    具体的关于delete操作符的更多详细信息,参考 未完成

    使用字面量或内置构造函数创建对象

    最简单的字面量{}对象也具有Object.prototype继承的属性和方法。

    通过Object构造函数创建的对象,在创建的时候存在一个作用域解析的问题,
    解析器要从调用Object()的位置开始沿着作用于链向上查找Object构造函数,存在效率问题。

    当用new操作符调用构造函数时,构造函数总是返回一个对象,默认是返回this指向的对象,
    除非通过return返回一个其他对象(若return返回的不是对象,则返回的还是this)。

  • 相关阅读:
    Android开发之SQLite的使用方法
    【转】如何分析解决Android ANR
    error log
    33层高楼为什么27楼和28楼最贵 次顶层房价高原因揭秘
    Could not allocate CursorWindow size due to error -12 错误解决方法
    过来人讲述买房血泪史:什么样的房子不能碰
    cocos2d-x删除vs2010项目模板
    Lua学习笔记5:类及继承的实现
    Linux vsftpd服务配置具体解释
    Android_Dialog_设置Dialog窗体的大小
  • 原文地址:https://www.cnblogs.com/xf_z1988/p/javascript_pattern.html
Copyright © 2011-2022 走看看