zoukankan      html  css  js  c++  java
  • 『JavaScript』核心

    弱类型语言

    JavaScript是一种弱类型的语言。变量可以根据所赋的值改变类型。原始类型之间也可以进行类型转换。其弱类型的物质为其带来了极大的灵活性。

    注意:原始类型使用值传递,复合类型使用引用传递。

    原始类型 Key
    布尔型 bool
    数值型 number
    字符串型 string
    空类型 null
    未定义类型 undefined

    toString方法可以把数值或布尔值转换为字符串。parseFloat和parseInt函数可以把字符串类型转变为数值。双重非『!!』可以把字符串或数值转变为布尔值。

    复合类型 Key
    对象 object
    函数 function

    prototype

    JavaScript是一种基于原型的语言,所以我们可以通过对JavaScript对象的原型进行操作来达成一些目的。比如:

    • 给某个对象添加方法;
    • 给某个对象添加属性;
    • 实现类似面向对象的功能;
    • ...

    如果把JavaScript中的所有元素都当成对象来看待的话,我们可以得到一个合理的数据存储方式:JSON。

    在JavaScript内部,所有的元素都可以认为是以JSON方式进行存储的。换言之,每一个元素都是有Key以及Value两部分组成。所以以下给对象Anim添加方法的方式都是正确的:

    // Anim Class
    var Anim = function() {
      // ...
    };
    
    // Add function to Anim
    Anim.prototype.start = function() {};
    Anim.prototype.stop = function() {};
    
    // Another Way to add function to a class
    Anim.prototype = {
      start: function() {
        // ...
      },
    
      stop: function() {
        // ...
      }
    };
    

    我们还可以使用下面的方式给Anim添加方法。这一方式是将prototype.method看作是一个key,将function(name,fn)看作是一个value,然后通过给function(name,fn)传入对应的参数来实现给Anim添加方法的目的。我们还在method中加入了return this,以此来实现链式调用的目的。

     // Add a method to the Function object that can be used to declare methods.
    Function.protype.method = function(name, fn) {
      this.prototype[name] = fn;
      return this; // 链式调用
    };
    
    var Anim = function() {};
    Anim.method('start', function() {
      // ...
    });
    Anim.method('stop', function() {
      // ...
    });
    
     // Add a method to the Function object that can be used to declare methods.
    Function.protype.method = function(name, fn) {
      this.prototype[name] = fn;
      return this;
    };
    
    var Anim = function() {};
    Anim.method('start', function() {
      // ...
    });
    Anim.method('stop', function() {
      // ...
    });
    

    链式调用

    Anim.
    method('start', function() {
      // ...
    }).
    method('stop', function() {
      // ...
    });
    

    函数是一等对象

    在JavaScript中,『函数』被认为是带有可执行代码的复合对象。也就是说,对象所拥有的,函数都拥有,且对象所能做的,函数都可以做。

    主要特性:

    • 可以存储于变量中;
    • 可以作为参数传给其他函数;
    • 可以作为返回值从其他函数传出;
    • 可以在运行时构造。

    由于函数是一种对象,所以我们可以以如下方式来使用函数:

    // Function as Object
    (function() {
      // ...
    })()
    
    (function(a, b) {
      // ...
      return a + b
    })(1, 2)  
    

    对象的易变性

    在JavaScript中,所有的元素都可以被当成是对象,而且JavaScript中,所有的对象都是易变的。

    我们可以使用如下的方式在程序运行时给JavaScript对象属性:

    可以在需要的时候给对象添加属性(包括方法):

    function aFunction(){};
    aFunction.aAttribute = 0;
    

    可以在需要的时候,通过对prototype的操作,给JavaScript对象添加方法:

    function person(){
      this.name="Aaron";
      this.age=14;
    };
    person.prototype = {
      getName: function(){
        return this.name;
      },
      getAge: function(){
        return this.age;
      }
    }
    

    注意:由于JavaScript可以在任何时候为已经存在的对象添加属性、方法,所以我们往往不能保证最终被调用的属性、执行的方法是否是我们最初所编写的。

  • 相关阅读:
    java中goto语句
    随机产生一个小写字母
    java移位操作符注意的问题
    +号操作符
    类名引用static变量好处
    自己做题的简单的算法
    read()方法读取的是一个字节,为什么返回是int,而不是byte
    一道判断题
    关于继承中静态代码块,构造代码块,构造函数执行顺序
    比较好的Redux和React-Redux学习资料
  • 原文地址:https://www.cnblogs.com/sitemanager/p/3534841.html
Copyright © 2011-2022 走看看