目录

原型对象(prototype)

toString()

垃圾回收(GC)

数组(Array)

arguments

Date

Math

包装类

字符串方法

正则表达式

正则语法

字符串和正则表达式的相关方法

正则表达式语法

邮件的正则

function构造函数的弊端:将函数定义在全局作用域,污染了全局作用域的命名空间(其他人不能再用这个定义了);而且定义在全局作用域也很不安全

原型对象(prototype)

我们所创建的每一个函数,解析器都会向函数中添加一个属性prototype;这个属性对应着一个对象,这个对象就是原型对象。如果函数作为普通函数调用prototype没有任何作用。当函数以构造函数的形式调用时,它所创建的对象中都会有一个隐含的属性,指向该构造函数的原型对象,可以通过__proto__来访问该属性。

function MyClass(){}
MyClass.prototype.a = 123;//向MyClass的原型中添加属性a
MyClass.prototype.sayHello = function(){
//向MyClass的原型中添加一个方法
alert("hello");}
var mc = new MyClass();
var mc2 = new MyClass();
mc.a = "我是mc中的a";
mc.sayHello();//"hello"
console.log(mc.__proto__==MyClass.prototype);//true
console.log(mc.a);//"我是mc中的a" 

原型对象就相当于一个公共区域,所有同一个类的实例都可以访问到这个原型对象,可以将对象中共有的内容统一设置到原型对象中。当我们访问对象的一个属性或方法时,它会先在对象自身中寻找;如果有则直接使用,如果没有则会去原型对象中寻找,如果找到则使用。

以后创建构造函数时,将这些对象共有的属性与方法统一添加到构造函数的原型对象中。不会分别为每一个对象添加,也不会影响全局作用域。

原型对象也是对象,所以它也有原型。当我们使用一个对象的属性或方法时,会现在自身中寻找如果有则直接使用;没有去原型对象中寻找;没有再去原型中的原型中寻找,直到找到Object对象的原型。如果Object中没有则会返回Undefined(Object对象的原型没有原型)

function MyClass(){
}
MyClass.prototype.name = "我是原型中的name";
var mc = new MyClass();
mc.age = 18;
//console.log(mc.name);//"我是原型中的name"
//使用对象的hasOwnProperty()来检查对象自身中是否含有该属性
//只有当对象自身中含有属性时才会返回true
console.log(mc.hasOwnProperty("age"));//true
console.log(mc.__proto__.__proto__.hasOwnProperty("hasOwnProperty"))//true
console.log(mc.__proto__.__proto__);//"[object Object]"

toString()

当我们直接在页面中打印一个对象时,事实上是输出对象的toString()方法的返回值;如果我们希望输出返回值不是Object Object,可以为对象添加toString方法。

直接在原型对象中赋值,输出哪个调用哪个。

function Person(name,age,gender){
this.name = name;
this.age = age;
this.gender = gender;}
Person.prototype.toString = function(){
return "Person [name="+this.name+",age="+this.age+",gender="+this.gender+"]";}
var per = new Person("Tom",15,"男");
var per2 = new Person("Sad",18,"女");
console.log(per);//"Person [name=Tom,age=15,gender=男]"
console.log(per2);//"Person [name=Sad,age=18,gender=女]"

垃圾回收(GC)

垃圾:当一个对象没有任何的变量或属性对它进行引用,此时我们无法操作该对象,这就是垃圾。如果垃圾过多会占用大量空间,导致程序运行过慢。在JS中拥有自动的垃圾回收机制,会自动将垃圾对象从内存中销毁,自己不需要操作。要做的只要将不在使用的对象设置null即可。

var obj = new Object();
obj = null;

数组(Array)

数组也是个对象;和普通对象功能相似,用来存储一些值;不同的是普通对象是使用字符串作为属性名,而数组用数字作为索引操作元素。索引:从0开始的整数就是索引。数组的好处:存储比普通对象要好,在开发中经常使用数组来存储一些数据。

使用typeof检查数组,返回object。

向数组中添加元素 语法:数组[索引] = 值

读取数组中的元素 语法:数组[索引];读取不存在的索引,会返回undefined

获取数组的长度 语法:数组.length;对于连续的数组,获取到数组的长度(元素的个数),对于非连续的数组,获取到数组的最大索引+1(尽量不使用非连续数组)。也可修改length,若修改的大于原长度多出来的会空出来;若修改的小于原长度,多出来会被删除。

var arr = Array();
arr[0] = 10;
arr[1] = 11;
arr[2] = 33;
arr[10] = 66;
console.log(arr[2]);//33
console.log(arr.length);//11
arr.length = 2;
console.log(arr);//"10,11"
console.log(arr.length);//2
arr[arr.length] = 70;
//向数组的最后一个位置添加元素
//语法:数组[数组.length] = 值;
console.log(arr);//"10,11,70"

数组字面量

使用字面量来创建数组。语法:[]

字面量创建数组时和构造函数创建数组时都可以指定元素,需用逗号隔开

 var arr = [1,2,3,4,5];
console.log(typeof arr);//Object
console.log(arr[3])//4
var arr2 = new Array(6,7,8,9)
//创建数组,数组中只有一个元素10
arr3 = [10]//10
//创建一个长度为10的数组
var arr4 = new Array(10);// ",,,,,,,,,"

数组中的元素可以是任意的数据类型,也可以是对象,函数,数组

var arr = [true,"hello",1,null,undefined]var obj = {name:"Tom"};
arr[arr.length] = obj;//"true,hello,1,,,[object Object]"
arr = [{name:"Sad"},{name:"Lay"},{name:"zhang"}];
arr = [function(){alert(1)},function(){alert(2)}]
console.log(arr[1].name);// "Lay"arr[1]();//alert(2)
//二维数组
arr = [[1,2,3],[3,4,5],[4,5,6]]
console.log(arr[1]);//"3,4,5"

数组的方法

functionName function
push() 用来向数组的末尾添加一个或多个元素,并返回数组新的长度
pop() 用来删除数组的最后一个元素,并返回被删除的元素
unshift() 向数组的开头添加一个或多个元素,并返回数组的新的长度
shift() 删除数组的开头的一个元素,并返回被删除的元素
var arr = ["Tom","Sad","Lay"];
var result =  arr.push("Lee","Lisa");
console.log(arr);//"Tom,Sad,Lay,Lee,Lisa"
console.log("result = "+result);//5
var result = arr.pop();
console.log(arr);//"Tom,Sad,Lay,Lee"
console.log("result = "+result);// "result = Lisa"
arr.unshift("ZZ","BB")
console.log(arr);// "ZZ,BB,Tom,Sad,Lay,Lee"
arr.shift();
console.log(arr);//"BB,Tom,Sad,Lay,Lee"   

数组的遍历

将数组中元素都获取到;一般情况我们都是使用for循环来遍历数组

var arr = ["Tom","Y","Lay"];
for(var i = 0;i <arr.length;i++){
console.log(arr[i]);}//"Tom" "Y" "Lay"

forEach遍历

forEach()遍历数组只能支持IE8以上的浏览器;forEach()方法需要一个函数作为参数,像这种函数不需要调用的称为回调函数;数组中有几个元素函数就会执行几次,每次执行浏览器会将遍历到的元素以实参的形式传递进来,可以定义实参来读取这些内容。

浏览器会在回调函数中创建三个函数:

  1. 第一个参数(value),正在遍历的元素
  2. 第二个参数(index),正在遍历的元素的索引
  3. 第三个参数(obj),正在遍历的数组
var arr =["Tom","Sad","Lay"];
arr.forEach(function(value,index,obj){
console.log(value);//"Tom","Sad","Lay"分行
console.log(index);//"0" "1" "2"
console.log(obj);//"Tom,Sad,Lay"不分行})

slice和splice遍历

slice(sart,[end])   切开
可以从一个数组中截取指定的元素;该方法不会影响原数组,而是将截取到的内容封装为一个新的数组并返回  
参数:

  1. 截取开始位置的索引(包括开始位置)
  2. 截取结束位置的索引(不包括结束位置)

第二个参数可以省略不写,如果不写则一直截取到最后;参数可以传递一个负值,如果是负值,则从后往前计数

var arr = ["Tom","Sad","Lay","Cold","City"];
var result = arr.slice(1,2);//"Sad"
result = arr.slice(3);// "Cold,City"
result = arr.slice(1,-1);//"Sad,Lay,Cold"
console.log(result);

splice()  拼接
可以用来删除数组中指定元素,使用splice()会影响到原数组,会将指定元素从原数组中删除,并将删除的元素作为返回值
参数:

  1. 删除开始位置的索引
  2. 删除的个数
  3. 三个及以后,都是替换的元素,这些元素将会插入到开始位置索引的前边
    var arr = ["Tom","Sad","Lay","Cold","City"];
    arr.splice(0,2);//"Lay,Cold,City"
    var result = arr.splice(0,3);//"Tom,Sad,Lay"
    var result = arr.splice(1,0,"cc","zz");//"Tom,cc,zz,Sad,Lay,Cold,City"
    console.log(result);
    console.log(arr);

    concat()可以连接两个或多个数组,并将新的数组返回。该方法不会对原数组产生影响。

var arr = ["Tom","Sad"];
var arr2 = ["Lay","Cold"];
var arr3 = ["aa","bb"];
var result = arr.concat(arr2,arr3,"zz");
console.log(result);//"Tom,Sad,Lay,Cold,aa,bb,zz"

join([splitor])
可以将一个数组转换为一个字符串,该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回。
参数:
需要一个字符串作为参数,这个字符串将会作为连接符来连接数组中的元素
如果不指定连接符则默认使用逗号(,)

var arr = ["Tom","Sad"];
var result = arr.join("@-@");
console.log(result);//"Tom@-@Sad"

reverse() 可以用来反转一个数组,它会对原数组产生影响

var arr = ["Tom","Sad"];
var result = arr.reverse();
console.log(result); //"Sad,Tom"

sort()
可以对一个数组中的内容进行排序,默认是按照Unicode编码进行排序;调用以后,会直接修改原数组。
可以自己指定排序的规则,需要一个回调函数作为参数:
我们可以自己来指定排序的规则
我们可以在sort()添加一个回调函数,来指定排序规则,
回调函数中需要定义两个形参,
浏览器将会分别使用数组中的元素作为实参去调用回调函数
使用哪个元素调用不确定,但是肯定的是在数组中a一定在b前边

浏览器会根据回调函数的返回值来决定元素的顺序,
如果返回一个大于0的值,则元素会交换位置
如果返回一个小于0的值,则元素位置不变
如果返回一个0,则认为两个元素相等,也不交换位置

如果需要升序排列,则返回 a-b
如果需要降序排列,则返回 b-a

var arr = [5,4];
arr.sort(function(a,b){
//console.log("a = "+a);/*"a = 5""b = 4"  "5,4"*/
//console.log("b = "+b);
return -1;//"5,4"
})
console.log(arr);
var arr2 = [2,6,8,4,1,3];
arr2.sort(function(a,b){
return a - b;//升序排列
});
console.log(arr2);//"1,2,3,4,6,8"

call() apply()

这两个方法都是函数对象的方法,需要通过函数对象来调用;当对函数调用call(),aplly()都会调用函数执行;在调用call(),apply()可以将一个对象指定为第一个参数;此时这个对象将会成为函数执行时的this;call方法可以将实参在对象之后依次传递;apply方法需要将实参封装到一个数组中统一传递。

this的情况:

  1. 以函数形式调用时,this永远都是window
  2. 以方法的形式调用时,this时调用方法的对象
  3. 以构造函数的形式调用时,this是新创建的那个对象
  4. 使用call和apply调用时,this时指定的那个对象
function fun(a,b){console.log("a = "+a);console.log("b = "+b);alert(this);}var obj ={}//fun.call(obj);//object object//fun.apply(obj);//object object//fun();//object window,区别在于指定对象不同fun.call(obj,2,3);//"a = 2";"b = 3"fun.apply(obj,[2,6]);//"a = 2";"b = 6"

arguments

在调用函数时,浏览器每次都会传递两个隐含的参数

  1. 函数的上下文对象this
  2. 封装实参的对象arguments

arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度;在调用函数时,所传递的实参都会在arguments中保存;arguments.length表示获取实参的长度;arguments[0]表示第一个参数,arguments[1]表示第二个参数;callee属性对应一个函数对象,就是当前正在指向的函数对象。

function fun(){console.log(Array.isArray(arguments));//falseconsole.log(arguments.length);//2console.log(arguments[0]);//1console.log(arguments.callee);/*"function fun(){console.log(Array.isArray(arguments));//falseconsole.log(arguments.length);//2console.log(arguments[0]);//1console.log(arguments.callee);}"*/console.log(arguments.callee == fun);//true}fun(1,2);

Date

日期的对象,在JS中通过Date对象来表示一个时间

//创建一个指定的时间对象
var d = new Date();//指定 月/日/年 时:分:秒"var d2 = new Date("05/02/2022 12:12:12");console.log(d);//"Mon May 02 2022 16:29:23 GMT+0800 (中国标准时间)"console.log(d2);//"Mon May 02 2022 12:12:12 GMT+0800 (中国标准时间)"//getDate()获取当前日期对象是几日var date = d2.getDate();console.log("date = "+date);//"date = 2"//getDay()获取当前对象是周几,返回0-6的值,0:周天var day = d2.getDay();console.log("day = "+day);//"day = 1"//getMonth()会返回0-11的值表示当前时间对象的月份,0一月var month = d2.getMonth();console.log("month = "+month);//"month = 4"//getFullYear()获取当前年份var year = d2.getFullYear();console.log(year);//"2022"/*getTime()获取当前时间戳,指从格林威治时间的1970年1月1日0时0分0秒到当前所花费的毫秒数(1秒=1000毫秒);计算机底层保存时间使用时间戳*/var time = d2.getTime();console.log(time/1000/60/60/24/365);//利用时间戳来测试代码的执行性能var start = Date.now();//获取当前的时间戳for(var i = 0;i < 1000;i++){console.log(i);}var end = Date.now();console.log("执行了"+(end-start)+"毫秒");//"执行了141毫秒"

Math

Math和其他的对象不同,不是一个构造函数;属于一个工具类,不需要我们创建对象,它里边封装了属性运算相关的常量和方法;我们可以直接使用它来进行数学运算相关的操作

console.log(Math.PI);//"3.141592653589793"console.log(Math.abs(-6));//6//自动向上取整,小数位只要有值就自动进一console.log(Math.ceil(1.2));//2//自动向下取整,小数部位会舍掉console.log(Math.floor(1.99));//1//四舍五入取整console.log(Math.round(1.5))//2//可以生成一个0-1之间的随机数console.log(Math.random());//"0.22543523949570954"/*生成0-x之间的随机数Math.round(math.random()*x)生成x-y之间的随机数(Math.round(math.random()*(y-x)+x)*/for(var i = 0;i<100;i++){console.log(Math.round(Math.random()*10))//0-10之间的数console.log(Math.round(Math.random()*8)+2)//2-10之间的数}var max = Math.max(2,3,4);//最大值var min = Math.min(5,6,7);//最小值console.log(max);//4console.log(Math.pow(2,4));//返回x的y次幂,16console.log(Math.sqrt(9));//开方运算,3

包装类

在JS中为我们提供了三个包装类:通过这三个包装类可以创建基本数据类型的对象

  1. String():将基本数据类型转换为String对象
  2. Boolean():将基本数据类型转换为Boolean对象
  3. Number():将基本数据类型转换为Number对象

但是注意我们在实际应用中不会使用基本数据类型的对象。当我们去操作一个基本数据类型的属性和方法时,解析器会临时将其转换为对应的包装类,然后再去操作属性和方法,操作完成以后再将这个临时对象进行销毁。

//都转换为了对象var num = new Number(3);var str = new String("hello");var bool = new Boolean(true);var s = 123;s = s.toString();console.log(s);//"123"console.log(typeof s);//"string",调用是number

字符串方法

创建字符串时,底层字符串是以字符数组的形式保存的["H","e","l"]。

var str = "Hello";console.log(str.length)//"5",字符串长度console.log(str[2]);//"l"//charAt()根据索引获取指定的字符,根据索引获取指定的字符var result = str.charAt(0);var result = str[4];//"o"console.log(result);//"H"//charCodeAt()根据索引获取指定的字符编码(Unicode编码)var result = str.charCodeAt(0);console.log(result);//"72"//String.fromCharCode()根据字符编码获取字符var result = String.fromCharCode(72);console.log(result);//"H"//concat()用来连接两个或多个字符串,作用和+一样var result = str.concat("你好","再见");console.log(result);//"Hello你好再见"

indexOf()是从前向后找;lastIndexOf()是从后向前找
从一个字符串中检索指定内容,需要一个字符串作为参数,这个字符串就是要检索的内容,
如果找到该内容,则会返回其第一次出现的索引,如果没有找到则返回-1。可以指定一个第二个参数,来表示开始查找的位置

var str = "hello atguigu"result = str.indexOf("e",2);//"-1"  console.log(result);//值为"e"时为"1"result = str.lastIndexOf("u");console.log(result);//"0"

slice(start,[end])
可以从一个字符串中截取指定的内容,并将截取到内容返回,不会影响原变量
参数:

  1. 第一个:截取开始的位置(包括开始)
  2. 第二个:截取结束的位置(不包括结束)

可以省略第二个参数,如果省略则一直截取到最后;可以传负数,如果是负数则从后往前数
substring()和slice()基本一致,不同的是它不能接受负值作为参数,如果设置一个负值,则会自动修正为0,substring()中如果第二个参数小于第一个,自动调整位置,则会自动交换
substr()和slice()基本一致,不同的是它第二个参数不是索引,而是截取的数量

 var str = "zxcvb";result = str.slice(1,-2);console.log(result);//"xc"result = str.substring(1,-1);//等价于(0,1)console.log(result);//"z"result = str.substr(3,2);console.log(result);//"vb"

split:可以将一个字符串拆分为一个数组,参数:需要一个字符串作为参数,将会根据字符串去拆分数组,如果传递一个空串作为参数,则会将每个字符串都会拆分为数组中的一个元素。toLowerCase();将字符串转换为小写并返回
toUpperCase();将字符串转换为大写并返回

var str = "abc bcd efg hij";result = str.split(",");console.log(Array.isArray(result));//trueconsole.log(result[2]);//"efg"result = str.split("");//"a,b,c, ,b,c,d, ,e,f,g, ,h,i,j"console.log(result);str = "abcdef";result = str.toUpperCase();console.log(result);// "ABCDEF"

正则表达式

正则用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则,
也可以将一个字符串中符合规则的内容提取出来。var reg = new RegExp(“正则”,”匹配模式”);这个正则表达式可以检查一个字符串是否有a
    第二个参数(匹配模式):

  1. i:忽略大小写(ignore)
  2. g:全局匹配模式(默认为1次)设置匹配模式时,可以都不设置,也可以设置1个,也可以全设置,设置时没有顺序要求
var reg = new RegExp("a","i");
var str = "a";console.log(reg);// "/a/"console.log(typeof reg);//"object"/*test()可以用来检查一个字符串是否符合正则表达式
如果符合返回true,否则返回false*/
var result = reg.test(str);
console.log(reg.test("hbd"));//false
console.log(reg.test("Abd"));//true

正则语法

使用字面量来创建正则表达式。语法:var 变量 = /正则表达式/匹配模式。使用字面量的方式创建更加简单,使用构造函数创建更加灵活。

 var reg = new RegExp("a","i");//查找a忽略大小写reg = /a/i;//和上面一样console.log(typeof reg);//objectconsole.log(reg.test("abc"))
/*创建一个正则表达式,检查一个字符串中是否有a或b;使用 | 表示或者的意思;[]里的内容也是或的关系[ab]==a|b[a-z]任意小写字母 [A-Z]任意大写字母 [A-z]任意字母 [0-9]任意数字*/reg = /a|b/;//reg = /[A-z]/;console.log(reg.test("asd"));//true/*检查字符串是否含有abc或adc或aec*/reg = /a[bdc]c/;console.log(reg.test("adc"));//true//[^ ]除了reg = /[^ab]/console.log(reg.test("abc"));//true

字符串和正则表达式的相关方法

split()    即使不设置全局也会全部拆分
可以根据指定内容将一个字符串拆分为一个数组
参数:
需要一个字符串作为参数,将会根据字符串去拆分数组
可以接收一个正则表达式,此时会根据正则表达式去拆分数组

search()
可以搜索字符串中是否含有指定内容
如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
serach()只会查找第一个,即使设置全局匹配也没用

match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
可以为一个正则表达式设置多个匹配模式,且顺序无所谓
match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果

replace()
可以将字符串中指定内容替换为新的内容
参数:
1.被替换的内容,可以接受一个正则表达式作为参数
2.新的内容,空串则为删除””
默认只会替换第一个

var str = "1a2b3c4d5e6f7";    var result = str.split(/[A-z]/);console.log(result);//"1,2,3,4,5,6,7"str = "hello abc"result = str.search("abc");console.log(result);//"6"//搜索字符串是否含有abc或aec或afcresult = str.search(/a[bef]c/);console.log(result);//"6"str = "1a2b3c4d5e6f7A8B";result = str.match(/[a-z]/gi);//即全局又忽略大小写console.log(result);//"a,b,c,d,e,f,A,B"console.log(Array.isArray(result));//返回是一个数组result = str.replace("a","-@-");console.log(result);//"1-@-2b3c4d5e6f7A8B"result = str.replace(/[a-z]/gi,"");console.log(result);//"12345678"

正则表达式语法

量词
通过量词可以设置一个内容出现的次数;量词只对它前边的一个内容起作用
{n} 正好出现n次
{m,n} 出现mn次
{m,} m次以上
+至少一个,相当于{1,}
*个或多个,相当于{0,}
? 0个或1个,相当于{0,1}

var reg = /a{3}/;console.log(reg.test("aaabc"));//"true";reg = /(ab){3}/;console.log(reg.test("ababab"));//"true"reg = /ab{1,3}c/;console.log(reg.test("abbbbc"));//"false"reg = /ab{3,}c/;console.log(reg.test("abbbbbc"))//"true",有c为true,无c为falsereg = /ab+c/;console.log(reg.test("abc"))//truereg = /ab*c/;console.log(reg.test("ac"));//truereg = /ab?c/;console.log(reg.test("abc"));//true// ^ 表示开头reg = /^a/;console.log(reg.test("asd"));//true//$结尾reg = /a$/;console.log(reg.test("asd"));//false//如果同时使用^ $要求字符串必须完全符合正则表达式reg = /^a$/;//==/a/console.log(reg.test("a"));//true

元字符
检查一个字符串中是否含有 .
. 表示任意字符
在正则表达式中使用\作为转义字符
\. 来表示.
\\ 表示\
\w
任意字母、数字、_ [A-z0-9_]
\W
除了字母、数字、_ [ ^A-z0-9_]
\d
任意的数字 [0-9]
\D
除了数字 [ ^0-9]
\s
空格
\S
除了空格
\b
单词边界
\B
除了单词边界

 var reg = /\./;console.log(reg.test(","))//falsereg = /\\/;console.log(reg.test("b.\\"))//在打印时候也会转换\\变为\/*注意,使用构造函数时由于它的参数是一个字符串,而\是字符串中转义字符;如果要使用\则需使用\\来代替;字面量中用\构造函数中用两个\\*/reg = new RegExp("\\.")console.log(reg);//"/\./"//创建正则表达式检查字符串是否含有单词childreg = / hello \bchild\b/;//表示是一个独立的单词console.log(reg.test("childen"));//"false"//去除开头和结尾的空格str = "   he llo   "str = str.replace(/^\s*|\s*$/g,"");console.log(str);// "he llo"

邮件的正则

/*电子邮件
hello . nihao   @  abc   .com.cn
任意数字字母下划线 . 任意数字字母下划线  @. 任意字母数字  任意字母2-5位.任意字母2-5位
\w{3,}  (\.\w+)*    @   \. [A-z0-9]+ ([A-z]{2,5}){1,2}*/var emailReg = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;var email = "abc@abc.com";console.log(emailReg.test(email));//true

JavaScript(3)基础相关推荐

  1. JavaScript 设计模式基础(二)

    JavaScript 设计模式基础(一) 原型模式 在以类为中心的面向对象编程语言中,类和对象的关系就像铸模和铸件的关系,对象总是从类中创建.而原型编程中,类不是必须的,对象未必从类中创建而来,可以拷 ...

  2. javaScript系列 [01]-javaScript函数基础

    [01]-javaScript函数基础 1.1 函数的创建和结构 函数的定义:函数是JavaScript的基础模块单元,包含一组语句,用于代码复用.信息隐蔽和组合调用. 函数的创建:在javaScri ...

  3. JavaScript的基础学习篇

    在学习JavaScript之前,我们应该先认识一下什么是脚本语言(Scripting Language)? 脚本语言就是一种简单的程序.在运行之前不需要先进行编译,所有的代码都是在客户程序中直接被执行 ...

  4. JavaScript 语言基础知识点图示

    JavaScript 语言基础知识点图示: 转载于:https://www.cnblogs.com/mrxia/p/4059252.html

  5. JavaScript正则表达式-基础入门

    JavaScript正则表达式-基础入门 字符类,如 /w/ 为匹配任何ASCII字符组成的字符 重复, 如 /w{1,3}/ 为匹配一到三个单词 选择.分组和引用 指定匹配位置 修饰符 直接量字符 ...

  6. JavaScript 语言基础知识点总结(思维导图)

    1.JavaScript数组 2.JavaScript 函数基础 3.Javascript 运算符 4.JavaScript 流程控制 5.JavaScript 正则表达式 6.JavaScript ...

  7. JavaScript语言基础(二)

    一.之前介绍了JavaScript语言基础的关键字.标识符.常用的数据类型,文章地址:JavaScript语言基础(一) ,下面来介绍JavaScript基础中的常量和变量. 1.常量:当程序运行时, ...

  8. JavaScript语言基础(一)

    1.通过学习JavaScript语言基础,我们应该了解关键字与标识符.掌握JavaScript常用的数据类型.熟悉常量与变量.熟悉运算符和表达式. JavaScript语言基础知识框架如下图所示: 此 ...

  9. 《HTML5+JavaScript动画基础》——2.4 JavaScript对象

    本节书摘来自异步社区<HTML5+JavaScript动画基础>一书中的第2章,第2.4节,作者:[美]Billy Lamberta , Keith Peters著,更多章节内容可以访问云 ...

  10. JavaScript的基础语句整理

    JavaScript的基础语句整理 文章目录 JavaScript的基础语句整理 一.JavaScript的输出 二.JavaScript的基础语句 2.JavaScript语句的关键词 总结 大部分 ...

最新文章

  1. Redis 高级教程 Redis 基准(3)
  2. asp.net调用百度地图API,实现电子地图
  3. windows10 上运行 linux -- Cygwin
  4. Android恶意软件偷取Uber凭证
  5. python通过DictReader实现两个csv文件的映射查找lookup之代码详解
  6. Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
  7. 002编程基础----makefile
  8. 2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!
  9. Log4j的简单配置使用
  10. c语言怎么储存字母,c语言怎么用变量存储中文字符?书本上面没有的秘密
  11. tomcat 多实例的Sys V风格脚本
  12. mysql网络投票系统设计_学生在线投票表决系统设计与开发(JSP,MySQL)
  13. 8、Map存储世界杯信息相关操作
  14. android admob sdk,android – 无法显示AdMob横幅
  15. 纯CSS手里剑绘制优化1
  16. mysql opt frm_将.frm和.opt文件导入MySQL
  17. sw与matlab连接_solidworks模型如何导入matlab?
  18. 远程访问本地mysql
  19. 金蝶EAS管理控制台一闪而过
  20. 零基础小白如何自学画画

热门文章

  1. 多边形的扫描转换算法 c语言,C++程序例题:多边形扫描转换算法
  2. 《Dreamweaver CS6 完全自学教程》笔记 第四章:创建站点
  3. Dreamweaver cs6运行出现错误16的解救方法
  4. 阿里云服务器ddos攻击防御
  5. 消防Linux软件图形显示系统,消防控制室图形显示装置
  6. 基于matlab的排队系统仿真
  7. js前端实现ios12和ios13+摇一摇功能
  8. 电脑新建文件夹快捷键
  9. Python dataframe绘制饼图_基于Python的图表绘图系统matplotlib,“饼图“”你真了解吗?...
  10. 操作系统——内存交换技术