JS学习基础

强制类型转换
(1)tostring(只能在boolean number string转换 ): number->string   
var a = 123; a=a.tostring(); a的类型仍然为number,返回结果为string类型 
(2)String() :a=123; a=String(a)
(3)Number():a=“123”;a=Number(a);true=1,false=0,null=0,undefined=NaN 局限性:原来的定义中不能含有非数字,否则会报错  
(4)parseInt():把一个字符串中的有效整数内容转换成Number:a="123a456" ; a=parseInt(a);----a=123    a="123.456" ; a=parseInt(a);----a=123
    可以在parseInt()中使用参数:a="070"; a=parseInt(a,10)表示十进制
(5)parseFloat():a="123.123.123a456" ; a=parseInt(a);----a=123.123
(6)boolean():数字->bool:除了0和NaN,其他都是true;字符串->:除了空串,其他都是true;null和undefined都是false

运算符
(1)将两个字符串相加,会进行拼串:a="123"+"456" ;----a="123456" ;a="你好"+"我好";--a="你好我好"  PS:字符串参与的加法,其他类型也会先转化成字符串
PS:进行类型转换的时候,可以进行加法:a=123; a=a+"";此时a为字符串类型
(2)做-*/运算时,其他类型都转换成Number类型,可以此做类型转换
(3)可以将一个非Number类型转化成Number:a=“123”;a=+a ;----a=123
(4)! :a=10;a=!a; ----a=false
(5)&&:一旦出现false&&,则返回false  非bool:两个值都为true,返回后者的值;一旦出现false,返回false的值 (第一个值为false返回前者,否则返回后者)(优先级高于||)
(6)||:一旦出现true||,则返回true 非bool:两个值都为 false,返回后者的值,一旦出现true,返回true的值   (第一个值为true返回前者,否则返回后者)
(7)==:不同的类型进行比较的时候,会转换成相同的类型
(8)===全等:不同的类型进行比较的时候,不会转换成相同的类型

语句
(1)prompt():弹出一个提示框,该框中带有文本框,需要字符串作为参数,用户输入的内容作为函数返回值:var i = prompt(“请输入一个数字”)PS:返回类型为String
(2)isNaN():判断值是否为非数字
(3)switch(){
    case 表达式:...;break;
    default:...;break;
}
(4)给循环加名称:label:循环语句:hello:for(...)-----break  hello  表示退出指定循环,而不是最近的循环。continue同理,
(5)console.time(“名称”):开启计时器,需要一个字符串作为参数     
         console.timeEnd(“名称”)作为测试性能
对象
1.内建对象    
    -由ES标准中定义的对象,在任何的ES的实现中都可以使用
    -比如:Math String Number
2.宿主对象
    -由JS的运行环境提供的对象,目前来说主要指由浏览器提供的对象
    -比如:DOM BOM
3.自定义对象
    -由开发人员自己创建的对象

使用new关键字调用的函数,是构造函数constructor    -专门用来创建对象的函数
//var obj = new Object();     
向对象中添加属性:对象.属性 = 属性值;/对象["属性名"]=属性值;使用[]时,属性名可以为变量,更加灵活
//obj.name = "sun";
读取对象中的属性:对象.属性名
//obj.name
删除对象中的属性:delete 对象.属性名
//delete obj.name;

构造函数
//普通函数是直接调用,构造函数需要使用new构造
1.立刻创建一个新的对象
2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
3.逐行执行函数中的代码
4将新建的对象作为返回值返回
//使用同一个构造函数创建的对象,称为一类对象,一个构造函数成为一个类,创建的对象,称为该类的实例
//使用instanceof检查一个对象是否是一个类的实例
function Person(name,age){this.name = name;this.age = age}
var per = new Person("sun",18);
console.log(per instanceof Person);


对象字面量创建方法  //比上面的方法更加简单
// var obj = {};   
添加属性:{属性名:属性值,属性名:属性值}
//var obj2 = {name = "sun" , age:28};

工厂方法创建对象
function create(name,age,gender){
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.gender = gender;
    return obj;
}

方法:对象中嵌套函数

in 运算符
    -通过该运算符可以检查一个对象中是否含有指定的属性,有true,无false
    -“属性名”in 对象 //原型中有也会true
    -检查自身中是否含有:hasOwnProperty()
//console.log(obj.hasOwnProperty("name"))

基本数据类型的值保存在栈内存中
对象保存在堆内存中,变量(栈内存)保存的是对象的地址

封装
(1)函数声明:function 函数名([形参1,形参2....形参n]){  语句}
//function fun(){    }    ==   var 函数名 = function([形参]){  }
//形参不用设置类型:function fun (a,b){a+b;}
(2)函数调用:函数对象()
fun(1,2)  -3
(3)设置return 作为函数的执行结果返回

枚举对象中的属性:for ...in语句  
//对象中有几个属性,循环体就会执行几次,每次执行时,会自动将对象中的一个属性名赋值给变量
    -for(var 变量 in 对象 ){...}
 //for (var n in obj){console.log(obj[n])} //对象[]可以使用变量

作用域
(1)全局变量:其中有个window对象,代表的是一个浏览器的窗口,可以直接使用
//创建的全局变量会作为window对象的属性保存,需要访问全局变量:window.变量
//创建的函数会作为window对象的方法保存
(2)变量声明:var关键字声明的变量,会在所有代码执行之前被声明(不会赋值)
(3)函数声明:function 函数(){}会在所有代码执行之前声明  var xx = function()不能声明提前

this
//解析器在调用函数时会向函数内部传递两个隐含的参数:this 和arguments
//根据函数调用方式不用,this会指向不同的对象
1.以函数的形式调用,this永远都是window
2.以方法的形式调用,this为调用方法的对象
// function fun(){console.log(this.name); }
var obj = {name:"sun",sayName:fun}
var obj2 = {name:"sha", sayName:fun}
obj.sayName();//sun
obj2.sayName();  //sha  
//当调用哪个方法的时候,this就是哪个函方法的对象

call()和apply()
    -可以将一个对象指定为第一个参数,这个对象会成为这个函数的this
    -call可以将实参在对象之后依次传递
    -apply需要将实参封装到一个数组里统一传递

原型prototype
//每个函数都有一个属性叫prototype,对应着它的原型对象
//可以通过__proto__访问该属性
//原型对象相当于一个公共的区域,所有同一个类的实例都可以访问到这个对象,可以将对象中共有的内容统一设置到原型对象中
function Fun(){}
Fun.prototype.a = 123;
var fun = new Fun();
fun.a();//123

数组
var arr = new Array(); //var arr = [];
arr[0] = 10;
//获取长度arr.length
//设置,增加删除arr.length=... 大于原值增加,小于删除
//向数组最后一个位置添加元素:arr[arr.length] = ..
//push();向数组末尾加一个或者多个元素,并返回数组新的长度
//pop();删除数组最后一个元素,并将删除元素返回
//unshift();向数组开头添加一个或者多个元素,并返回新的数组长度
//shift();删除数组第一个元素,并将删除元素返回
//slice():可以从数组中提取元素:参数:1.开始索引位置 2.结束索引位置,可以为负值表示从后数
    该方法不会改变原数组,而是将截取的元素封装到新数组:arr2 = arr.slice(1,2);
//splice:可以删除数组中指定元素,并将删除元素返回:参数:1.开始索引位置 2.删除数量 3以后:可以传递新元素,新元素会自动插入到开始位置索引前
//concaat():可以连接多个数组,并将新的数组返回
//join():可以指定一个字符串作为参数,它将成为数组中元素的链接
//    arr = ["sun","sha","zhu"];result = arr.join(" ");
    console.log(result);//sun sha zhu
//reverse():反转数组:后面的去前面,前面的去后面
//sort():对数组进行排序,但是根据unicode排序,有时候会出错,需要设置一个回调函数:    -回调函数需要定义两个形参,根据回调函数的返回值觉得顺序
    ->0交换,<0位置不变,0元素相等,不交换
//arr = [1,5,7,9];    arr.sort(function(a,b){return a-b;//升序 return b-a //降序}  )


forEach()方法需要一个参数作为参数
    -由我们创建但不是我们调用的,称为回调函数
    -数组中有几个元素函数就会执行几次
    -每次执行的时候,浏览器会将遍历到的元素,以实参的形式传递进来
    -会返回三个参数:1.正在遍历的元素 2.正在遍历元素的索引 3.正在遍历的数组
arr.forEach(
function(value,index,obj){
   console.log(value);
   }

arguments
1.arguments是一个类数组对象,可以通过索引操作数据,也可以获取长度
2.调用函数的时候,传递的实参都会在arguments中保存
3.存在一个属性:callee:对应一个指向当前执行的函数对象

Date
1.直接创建使用Date对象,会封装为当前代码执行的时间
var D = new Date();
2.创建一个指定时间的对象:需要在构造函数中传递一个字符串作为参数
var D2 = new Date(" 12/03/2016 11:10:30" );
3.getDate():获取Date对象的周几
4.getMonth(): 
5.getFullYear();
6.getTime():获取当前Date对象的时间戳
    -时间戳:从格林威治标准时间的1970年1月1日00:00:00到当前时间的毫秒数
    -1秒=1000毫秒,计算机底层保存时间时都是使用时间戳
7.获取当前时间戳:time = Date.now();
            
Math
1.random():可以生成0-1的随机数:

包装类
临时将基本数据类型转换成对象
var num = new Number(3) //创建一个number类型的对象
var str = new String("hello")
var bool = new boolean(true)
在底层字符串是以字符数组的形式保存的

正则表达式
1.用于定义一些字符串的规则,计算机考研根据此检查字符串是否符合规则
//var 变量 = new RegExp("正则表达式","匹配模式")
var reg = new RegExp("a");
//test():使用这个方法可以检查一个字符串是否符合正则表达式的规则 ps:是否含有
var str = "a";
var result = reg.test(str);//true,检查到这个字符串含有:a
//匹配模式:1. i忽略大小写 2.g全局匹配模式

2.使用字面量创建:var 变量 =/正则表达式/匹配模式
var reg = /a/i
//创建一个正则表达式,检查字符串中是否含有a或b
var reg = /a | b/;
// []里的内容也是或的关系
[ab] ==a | b
[a-z] 任意小写字母 
[A-z] 任意字母
a[bcd]e //abe ace ade
[^ab] 除了ab

3.量词:可以通过量词设置一个内容出现的次数,只对它前面一个内容起作用
var reg = /ab{3}/ 
//表示出现三次b
var reg = /(ab){3}/  
//表示出现三次ab 
var reg = /ab{1,4}/  
//表示出现一到三次ab
var reg = /ab{4,}/
//表示出现四次以上
var reg = /^a/
//表示以a开头
var reg = /a$/      在正则中同时使用^$要求字符串完全符合正则表达式
//表示以a结尾

.表示任意字符,所以用\.表示.

1.\w  字母,数字,_
2.\W   除了字母,数字,_
3.\d   任意数字
4.\D  除了任意数字
5.\s  空格
6.\S  除了空格
7.\b  单词边界
//检查一个字符串中是否有单词child
var reg = /\bchind\b/
8.\B  除了单词边界

可以接受正则表达式作为参数
//split() :将一个字符串拆分为一个数组,默认全局匹配g
//search(): 搜索字符串中是否含有指定元素,若有则返回搜索到的第一个出现的索引,没有则返回-1,只能查找第一个,不能g
//match():从字符串中将符合条件的内容提取出来,默认找到第一个就结束,结果封装到数组中
//replace() :将字符串中指定内容替换成新内容,默认替换第一个
 result = str.replace("@","@_@")

手机号规则:
1.以1开头
2.第二位3-9任意数字
3.三位以后任取数字,共9位
var phoneReg = /^1[3-9][0-9]{9}$/

去除开头结尾的空格
var reg ="         he   is  mine      "
str = str.replace(/^\s{0,} | \s{0,}$/g,"");  //将开头和结尾的空格替换成空


JSON:一个特殊格式的字符串,可以被任意语言所识别,并且可以转换为任意语言中的对象
JSON在开发中主要用来数据的交互
JSON分类:1.对象{} 2.数字[]
JSON中允许的值:1.字符串 2.布尔值 3.数值 4.null 5.对象 6.数组
JS中有一个工具类:JSON,可以将JSON字符串转换成JS对象
JSON.parse() 可以将JSON字符串转换成JS对象,需要一个JSON字符串作为参数
JSON.stringify() 可以将JS对象转换为JSON字符串,需要一个js对象作为参数
JSON对象在IE7及以下不支持,需要兼容时,可以引用JSON文件

eval()可以执行一段字符串形式的JS代码,并将执行结果返回,需要一个参数,具有安全隐患,尽量少用
如果eval()执行的字符串中还有{},它会将{}当成代码块,可以在其前后加()
//var str =“aleret(hello);”
//eval(str);

//var str2 = '{"name":"孙悟空"}';
//var obj = eval("("+str2+")"); 可以获取str2的对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值