对象

JS对象的定义:

属性名在以下情况要添加单引号:

  1. 如果属性名是JS中的保留字之一,如break ,case
  2. 包括任何除字母、数字、下划线及美元符号以外的字符
  3. 如果属性以数字开头的话

用[]定义数组的方法我们称之为数组文本标识法,用大括号{}定义对象的方法叫做对象文本标识法

var hero = { //hero表示变量名,数组以[],对象以{}
  one: 'This is one',
  two: 2,
  '3': '3' //不加单引号是不合法的
};

hero.one; //读取普通属性
"This is one"
hero["3"] //读取特殊属性的方法,使用 hero.3 报错
"3"

Array()是一个用来构建数组的内建构造器函数。

常用的var a = [] 实际上就是 var a = new Array();

      我们也可以使用Array()构造器创建新数组时,给赋值,如var a = new Array(1,2,3,4) 不过注意如果传递的是一个单独的数字,构造器会认为这是数组的长度。如new Array(3) 会认为数组的长度是3。

数组的特别之处,一是数组的属性名从0开始,二是数组有length属性用来记录数组的长度。

var a = new Array();
undefined
a.b = 2; //这样是允许的,length会忽略非数字键名属性
2
a.length;
0

a.length = 4; //可以通过手动设置length属性,调整数组的长度,如果设置长度大于原来长度自动
//创建空元素代替,如果长度小于原来长度多出的那部分元素将会被移除

数组的方法:

  1. push()方法会在数组的末端添加一个新元素,返回改变后数组长度
  2. pop()方法将数组最后一个元素移除,返回移除的元素
  3. sort()方法则是用于给数组排序的,返回排序后的数组
  4. join()方法返回将数组中的所有元素用逗号(可以指定)连接而成的字符串
  5. slice(x,s)在
  6. 不修改数组的情况下返回其中的某个片段 如从索引为x的元素开始,返回s个元素
  7. splice(x,s,n)于slice一样,不过会把返回的片段从数组中删除,并把n元素插入到删除的地方

prototype属性

当函数是一个对象构造时,可以通过修改该函数的prototype属性让引用另一个对象,达到访问另一个对象属性的目地。

var a = {
  name : 'xiaohong',
  age : 12
};
undefined
function f(){
  this.sex = 'nv';
};
undefined
f.prototype = a; //以后以构造器f生成的对象就可以访问a对象的属性
Object { name: "xiaohong", age: 12 }

var f1 = new f();
undefined
f1.name;
"xiaohong"
f1.sex;
"nv"

toString()在自定义方法上会得到方法的源码,而内建函数使用toString()只能得到[native code]。可以通过这一点区分本地方法和自定义方法。

call()与apply()

它们触发函数,并指定相关的调用参数。

var some_obj = {
  name: 'Ninja',
  say: function(who){
    return 'Haya '+who+',I am a '+this.name;
  }
}
var my_obj = {name:'Scription guru'};
undefined
some_obj.say.call(my_obj,'Dude');//当say被调用时this自动设置成了my_boj对象的引用。
"Haya Dude,I am a Scription guru"
some_obj.say.apply(my_obj,['Dude']);//当say被调用时this自动设置成了my_boj对象的引用。
"Haya Dude,I am a Scription guru"

String对象的一些方法(以下方法会产生一个新字符串,不会修改原字符串):

我们将一个基本字符串当做对象来使用时,后台就会相应的创建String对象,在调用完之后又把String对象给销毁。

  1. toUpperCase() 将字符串的字符转换为大写
  2. toLowerCase()将字符串的字符转换为小写
  3. charAt()返回指定位置的字符,如果传递给charAt()的位置并不存在,返回一个空字符串
  4. indexOf()实现字符串的内部搜索,返回第一次匹配到字符串的位置 ‘asdf'.indexOf('s') => 1   从0开始。搜索不到返回-1
  5. lastIndexOf() 从末端开始搜索 搜索不到返回-1
  6. slice(m,n), subString(m,n)返回m元素到n元素之间的元素,包含本身。区别在于对每每个参数为负时处理方法不同。slice处理为str.length-1, subString处理为0
    var  s = "Couch potato";
    undefined
    s.slice(3,-1);
    "ch potat"
    s.substring(3,-1);
    "Cou"
    
    ​

    7、split()方法可以根据我们所传递的分割字符串,将目标字符串分割成一个数组。是join的反操作

  7. concat()方法通过用于合并字符串 'adf'.concat('fff') => adffff 与+区别是+会修改原字符串

Math

Math只是一个包含 一系列方法和属性,用于数学计算的全局内建对象。

Math的属性:

Math.PI //数字常数pi
3.141592653589793
Math.SQRT2; //2的平方根
1.4142135623730951
Math.E; //欧拉常数E
2.718281828459045
Math.LN2; //2的自然对数
0.6931471805599453
Math.LN10; //10的自然对数
2.302585092994046

Math的方法:

Math.random(); //生成一个0-1之间的随机数 获取某max和min之间的值,可以通过一个公式((max-min)*Math.random()) + min来实现
0.09992417033894196
Math.floor(4.5); //返回左侧最接近的整数
4
Math.ceil(4.5); //返回右侧最接近的整数
5
Math.round(4.5); //四舍五入返回整数
5
Math.max(2,3); 
3
Math.min(2,3);
2
Math.pow(2,8); //2的8次方
256
Math.sqrt(9); //9的平方根
3

Date()是用于创建Date对象的构造器函数

注意溢出式:如 3月32会表示成4月1

new Date(); //以当前日期创建
Date Sun Jun 23 2019 10:20:13 GMT+0800 (China Standard Time)

new Date('2015 11 12'); //根据输入的字符串创建日期
Date Thu Nov 12 2015 00:00:00 GMT+0800 (China Standard Time)

new Date(1357027200000);//根据timestamp创建日期
Date Tue Jan 01 2013 16:00:00 GMT+0800 (China Standard Time)

Date的方法:

Date.getXxx()
Date.setXxx() //获取对应的时间如年 月日
Date.now() //返回当前timestamp

var a = new Date(Date.now());
undefined
a.getDay(); //查看日期是星期几,因为从周日开始用0表示
0

​

RegExp正则表达式

提供了一种强大的文本搜索和处理方式。

var re = new RegExp('j.*t'); //查询以j开始,t结束的字符串。.代表任意字符,*代表0个或多个
var re2 = /j.*t/;

RegExp的属性:用来设置RegExp搜索的规则

  1. global: 默认为false,相关搜索在找到第一个匹配时就会停止,如果需要找出所有匹配项,将其设置成true
  2. ignoreCase: 设置大小写相关性,默认为false
  3. multiline:设置跨行搜索,默认为false
  4. lastIndex: 搜索开始的索引位,默认值是0
  5. source: 用于存储正则表达式匹配模式

除了lastIndex,其余属性在对象创建之后就不可以修改。需要设置global,ignoreCase,multiline只要将它们传递给构造器,对应就会设置成true

var re = new RegExp('j.*t','gmi');
undefined

var re2 = /j.*t/gim;

RegExp对象的方法:两种可用于查找匹配内容的方法

  1. test()返回的是一个boolean值
  2. exec() 返回的则是一个由匹配到的字符串组成的数组。
    var re = new RegExp('j.*t');
    undefined
    re.test('jssst');
    true
    re.exec('jssst');
    Array [ "jssst" ]

     

以正则表达式为参数的字符串方法:

  1. match()方法,返回的是一个包含匹配内容的数组
  2. search()返回匹配字符串的索引位置
  3. replace()可以将相关的匹配文本替换成某些其他字符串,并返回,不修改原本字符串
  4. split() 根据指定的分割字符串将我们的输入字符串分割成一个数组。
  5. var s = new String('HelloJavaScriptWorld');
    undefined
    s.match(/a/);
    Array [ "a" ]
    
    s.match(/a/g); //g表示开启全部匹配
    Array [ "a", "a" ]
    
    s.search(/a/);
    6
    
    s.replace(/[A-Z]/g,''); //将字符串s中的所有大写字母替换成''
    "elloavacriptorld"
    
    s.replace(/[A-Z]/g,'_$&'); //$&表示被匹配到的字符串
    "_Hello_Java_Script_World"
    
    s.replace(/([A-Z])/g,"_$1"); //如果正则表达式中分子组(即带括号),那么可以用$1表示第一组
    "_Hello_Java_Script_World"
    //回调式替换。把查找的字符放入函数进行逻辑处理后在替换
    function fun(w){
      return '_'+w.toLowerCase();
    }
    undefined
    s.replace(/[A-Z]/g,fun); //每次查找到的匹配项,都要放入fun进行处理
    "_hello_java_script_world"
    
    s.split(/[o]/); //以字符o分隔,\s表示空格,如以空格分隔 s.split(/\s*/);
    Array(3) [ "Hell", "JavaScriptW", "rld" ]
    var csv = 'one, two,there ,four';
    undefined
    csv.split(/\s*,\s*/);
    Array(4) [ "one", "two", "there", "four" ]
    
    ​
    

    wef

抛出异常:

throw new Error('异常信息');

throw{ //可以定义异常名
  name: '异常名',
  message:'异常信息'
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值