zoukankan      html  css  js  c++  java
  • javaScript学习随笔

    1、<script>标签位置:为增强体验,避免用户较长时间看到空白窗口,<script>元素放在<body>元素中。

    2、js中区分大小写。

    3、js中变量第一个字符可以为字母、下划线、和美元符号$

    4、js中的变量是松散类型的,可以保持任何类型的变量。例如:var message = "hi";

    5、定义变量时,不加var,就是创建了一个全局变量。

    6、js的五种数据类型:undefined、null、boolean、number、string。

    7、用typeof可以查看对象类型,注意typeof是操作符而不是函数。

    8、当表示八进制时,前导值为0,若数值中出现大于7的数字,则自动转换为十进制解析。

    9、数值转换:number可用于任何数据类型,parseInt、parseFloat专门把字符串转换成数值。

    10、parseInt用于转换整数,可以指定进制。例:var num = parseInt("oxAF",16);

    11、paraseFloat不可指定进制。

    12、JS中函数用function声明。

    13、JS的参数实际上可以理解为一个数组,调用时,对参数的传递并不严格校验。例如定义的函数有两个参数,调用时可以传一个或者三个。

      因为JS的参数允许在函数内用arguments进行调用。
      例如:arguments[0]、arguments[1]。

    14、JS不支持重载,因为他并不校验参数个数、类型等信息。

    15、String是JS的基本数据类型。

      五种基本类型:
      Undefined、Null、Boolean、Number、String。
      JS中,只有这五种基本类型是值访问,其他的引用类型是址访问。

    16、访问变量有按值和按址两种方式,但是函数的参数只有按值传递。

    17、在JS中,非基本类型的复制是指向同一内存区域。函数的参数如果是非基本类型的,相当于复制。

    18、函数定义时,参数也不要加类型。

    19、 with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。

    20、在if、for代码段中定义的变量,在if、for的代码段执行完后仍然生效,直到当前函数结束才会失效。

    21、基本类型的在内存中占据固定大小的空间,存放在栈中。引用类型的值是对象,存放在堆中。

    22、用点号和方括号都可以访问对象的属性,但是用方括号可以通过变量来访问属性。

      例:

    var propertyName = "name";
    alert(person[propertyName]); //“WuYangChun”

    23、通常,除非必须使用变量来访问属性,否则一般用点号表示法。

    24、在JS中,数组的长度属性并不是只读的,可以通过设置长度删除数组尾部的数据。也可以通过length向尾部插入值。

    25、用数组实现栈的方法,用push(),pop()方法插入值、移除值。

    26、用push()和shift()结合实现队列方法。

    27、正则表达式的形式:

      var expression = /pattern/ flags;
      其中flags的取值可以为以下一个或多个:
      g:全局模式。
      i:表示不区分大小写。
      m:多行模式。

    28、正则表达式的两种用法:

      1、exec方法主要用于获取匹配到的值
      例:

    var text = "cat,bat,sat,fat";
    var pattern1 = /.at/g;
    var matchs = pattern1.exec(text);
    alert(matchs[0]);

      2、test方法主要用于判断是否有匹配的值
      例:

    var text = "cat,bat,sat,fat";
    var pattern1 = /.at/g;
    if(pattern1.test(text)){
        alert("have matching");
    }

    29、 修改属性的特性,需要用Object.defineProperty()方法。

      例:

    Object.defineProperty(){
        对象,属性名,特性设置
    }

    30、创建对象一:工厂模式实例代码:例:

    function createPerson(name,age,job){
        var o = new Object();
        o.name = name;
        o.age = age;
        o.job = job;
    
        o.sayName = function(){
            alert(this.name);
        }
    } 

    31、创建对象二:构造函数模式代码:例:

    function Person(name,age,job){
        this.name = name;
        this.age = age;
        this.job = job;
        this.sayName = function(){
            alert(this.name);
        }
    }

    32、构造函数模式的特点:

      1、没有显式的创建对象。
      2、直接将属性和方法赋值给this对象。
      3、没有return语句。
      4、函数首字母大写。

      缺陷:内部定义的函数其实也是创建了对象,当用构造函数定义多个对象时,相当于重复新建了内部的对象,显得没有必要。

    33、创建对象三:原型模式代码:例:  

    function Person(){}
    Person.prototype = {
      name : "WuYangChun",
      age : 29,
      job : "Software Engineer",
      sayName : function(){
        alert(this.name);
      }
    }

    34、原型模式的特点:

      解决了构造函数模式的缺陷,但所有实例在默认情况下都有相同的属性值。

    35、创建对象四:组合使用构造函数模式和原型模式代码:例:(这是目前使用最广的方法)

    function Person(name,age,job){
        this.name = name;
        this.age = age;
        this.job = job;
        this.friends = ["Shelby","Court"];
    }
    
    Person.prototype = {
        constructor : Person,
        sayName : function(){
            alert(this.name);
        }
    }

    36、构造函数、原型、实例的关系:

      每个构造函数都有一个原型对象,
      原型对象都包含一个指向构造函数的指针,
      实例都包含一个指向原型对象的内部指针。

    37、BOM对象

    window对象是BOM的顶层对象,能超控窗口大小、位置等等。
    location对象用于获取URL以及参数等信息。常用属性为:
        host        "www.baidu.com:80"
        hostname    "www.baidu.com"
        post        "80"
        href        "https://www.baidu.com"
        search        "?q=javascript"
    navigator对象用于检测插件及注册表。
    history用于查看访问历史。 
    38、事件冒泡模型比较适用。
    39、事件处理程序以on开头,如:onclick。
  • 相关阅读:
    辅助方法
    扩展方法学习发展之路
    对IOC模式与容器Autofac在MVC里面的一些用法
    Qlikview Session Recovery
    SNOY VAIO 索尼电脑亮度自动变暗
    EXCEL2010数据挖掘插件 下载地址
    Ubuntu20.04 源码安装完应用 如何将应用程序添加到启动器
    flask + flask_restplus+ blueprints 脚手架
    闭包
    操作方法
  • 原文地址:https://www.cnblogs.com/wee616/p/5087132.html
Copyright © 2011-2022 走看看