javaScript学习随笔

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

二、js中区分大小写。java

三、js中变量第一个字符能够为字母、下划线、和美圆符号$正则表达式

四、js中的变量是松散类型的,能够保持任何类型的变量。例如:var message = "hi";express

五、定义变量时,不加var,就是建立了一个全局变量。数组

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

七、用typeof能够查看对象类型,注意typeof是操做符而不是函数。post

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

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

十、parseInt用于转换整数,能够指定进制。例:var num = parseInt("oxAF",16);prototype

十一、paraseFloat不可指定进制。

十二、JS中函数用function声明。

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

  由于JS的参数容许在函数内用arguments进行调用。
  例如:arguments[0]、arguments[1]。

1四、JS不支持重载,由于他并不校验参数个数、类型等信息。

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

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

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

1七、在JS中,非基本类型的复制是指向同一内存区域。函数的参数若是是非基本类型的,至关于复制。

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

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

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

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

2二、用点号和方括号均可以访问对象的属性,可是用方括号能够经过变量来访问属性。

  例:

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

2三、一般,除非必须使用变量来访问属性,不然通常用点号表示法。

2四、在JS中,数组的长度属性并非只读的,能够经过设置长度删除数组尾部的数据。也能够经过length向尾部插入值。

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

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

2七、正则表达式的形式:

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

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

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

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

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

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

2九、 修改属性的特性,须要用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);
    }
} 

3一、建立对象二:构造函数模式代码:例:

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

3二、构造函数模式的特色:

  一、没有显式的建立对象。
  二、直接将属性和方法赋值给this对象。
  三、没有return语句。
  四、函数首字母大写。

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

3三、建立对象三:原型模式代码:例:  

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

3四、原型模式的特色:

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

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

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);
    }
}

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

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

3七、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用于查看访问历史。 
3八、事件冒泡模型比较适用。
3九、事件处理程序以on开头,如:onclick。
相关文章
相关标签/搜索