zoukankan      html  css  js  c++  java
  • ECMAScript一步一步创建自己的js类库(一):理解函数

    ECMAScript中最有意思,最强大的地方在于函数。最进在完善自己的js类库的时候发现我们经常在用函数,但真的很少有人懂得ECMAScript函数功能。

    1:什么是函数?

      ECMAScript函数其实就是对象,每个函数都是Function类型的实例而且有属性和方法,由于函数是对象,函数名其实就是指向函数对象的指针,不会与某个函数绑定。

    2:创建函数的方法

    (1):function Person(name)
       {
        return name;
       }
    (2):var Person=function(name)
      {
      return name;
      }
    
    (3):var Person=new function(“name”,”return name”);(不推荐使用,ECMAScript会解析两次所以不推荐使用)

    3:函数声明和函数表达式的不同

      ECMAScript对函数声明和函数表达式的解析并非一视同仁,解析器会先读取函数声明,并使其在任何代码前都可用。

      例:

    assert(false);
     function assert(value, msg) {
     if (!value) {
           alert (msg || (value + " does not equal true"));
                }
         }

    函数表达式为执行到这一行才解析器才会解析

    如:assert(false);
          var assert=  function (value, msg) {
                if (!value) {
                    alert (msg || (value + " does not equal true"));
                }
    
            }

    4:理解this属性

     this 属性是我们经常用的属性,其行为与Java,C#,PHP大致类似。

    如:window.name=’用未来思考现在’;
    
    window.name = "用未思考现在;
            showName();
            function showName() {
                alert(this.name);
            }

    5:创建自己的类库插件

    简单的介绍了下函数,对于理解函数这些内容远远不够,例如构造函数模式,原形模式,原形链等等都是要花很多时间去理解。

    创建类

    var Class = function () {
        var extclass = function () {
           //接收属性传过来的参数
            this.init.apply(this, arguments);
        }
        //给类添加自定义属性
        extclass.prototype.init = function () { };
        //给prototypr定义别名?
        extclass.fn = extclass.prototype;
        //定义类的别名?
        extclass.fn.parent = extclass;
        //给类添加属性
        extclass.extend = function (obj) {
            var extended = obj.extended;
            for (var i in obj) {
                extclass.fn[i] = obj[i];
            }
            if (extended) extended(extclass);
        };
    
        //给实例添加属性
        extclass.include = function (obj) {
            var included = obj.included;
            for (var i in obj) {
                extclass.fn[i] = obj[i];
            }
            if (included) included(extclass);
        }
        return extclass;
    
    }

    类库大致的框架构建完成,这样我们创建类可以调用extended方法,创建实例可以调用include方法。下一章节会在此基础上扩展更多功能,基于原型给“类”添加继承。

  • 相关阅读:
    (十一)设置关闭多核cpu的核
    (十)修改开发板主频
    (九)How to use the audio gadget driver
    (8)全志A64查看寄存器
    内存溢出问题配置
    百度数据库优化经验
    如何让sql运行的更快
    百度性能优化
    spring ioc原理
    JNDI
  • 原文地址:https://www.cnblogs.com/yujj/p/2781980.html
Copyright © 2011-2022 走看看