一 普通对象
对象的分类
内建对象
由ES标准定义的对象,在任何ES实现都能使用 如 Math String Number Boolean Function Object等 宿主对象
由JS运行环境提供的对象,主要指浏览器提供的对象 如 BOM DOM等 console.log() document.write() 自定义对象
对象基本操作
var obj = new Object ( )
console. log ( typeof obj)
obj. name = "woshishui"
console. log ( obj. name)
console. log ( obj. sex)
obj. name = "shiwo"
delete obj. name
对象属性名与属性值
var obj = new Object ( )
obj. var = "hello"
obj. 123 = 789
console. log ( obj. 123 )
obj[ "123" ] = 789
var n = '123'
console. log ( obj[ n] )
obj. t1 = null
obj. t1 = undefined
var obj1 = new Object ( )
obj1. name = "zhu"
obj. t2 = obj1
console. log ( obj. t2. name)
in 检测对象中是否有此属性
console. log ( "name" in obj)
使用对象字面量创建对象
var obj = {
name: "wo" ,
age: 18
}
二 函数对象
创建函数
var fun = new Function ( "console.log('func');" )
console. log ( typeof fun)
fun. name = "wo"
console. log ( fun. name)
function fun ( [ a1, a2] ) {
console. log ( 'a' )
}
var fun1 = function ( ) {
console. log ( 'a' )
}
函数参数
function sum ( a, b ) {
console. log ( a+ b)
}
sum ( )
sum ( 1 , 2 )
sum ( 123 , 'hello' )
sum ( true , false )
sum ( 123 , 456 , 'hello' )
sum ( 123 )
函数返回值
function fun ( a, b ) {
var c = a + b
return
alert ( '弹窗' )
}
function fun1 ( ) {
function fun2 ( ) {
alert ( 'fun2' )
}
return fun2
}
a = fun1 ( )
console. log ( a)
a ( )
fun1 ( ) ( )
实参可以是任意值
function fun ( a ) {
console. log ( "a= " + a)
}
fun ( function ( ) { } )
function re ( a ) {
return a* a
}
fun ( re ( 10 ) )
立即执行函数
( function fun2 ( ) {
alert ( 'fun2' )
} ) ( )
遍历对象
for ( var n in obj) {
console. log ( n)
}
作用域
var a= 10
console. log ( window. a)
function fun ( ) {
consolel. log ( 'hi' )
}
window. fun ( )
全局作用域
console. log ( a)
var a = 10
fun ( )
function fun ( ) {
console. log ( 'hi' )
}
f1 ( )
console. log ( f1)
var f1 = function ( ) {
console. log ( 'f1' )
}
函数作用域
var a= 10
function fun ( ) {
var a= 20
console. log ( window. a)
}
var c= 33
function fun1 ( ) {
console. log ( c) ;
c= 10
d= 100
}
fun1 ( )
console. log ( c)
console. log ( d)
this
function fun ( ) {
console. log ( this . name)
}
var name = "全局"
var obj = {
name: "对象" ,
sayName: fun
}
fun ( )
obj. sayName ( )
使用工厂方法创建对象
function create ( name, age ) {
var obj = new Object ( )
obj. name = name
obj. age = age
return obj
}
var obj1 = create ( "wo" , 19 )
var obj2 = create ( "ni" , 20 )
构造函数
function Create ( name, age ) {
this . name = name
this . age = age
this . sayName = function ( ) {
alert ( this . name)
}
}
var obj1 = new Create ( "wo" , 19 )
var obj2 = new Create ( "ni" , 20 )
console. log ( obj1 instanceof Create )
console. log ( obj1 instanceof Object )
构造函数中方法的改进
function Create ( name, age ) {
this . name = name
this . age = age
this . sayName = function ( ) {
alert ( this . name)
}
}
var obj1 = new Create ( "wo" , 19 )
var obj2 = new Create ( "ni" , 20 )
console. log ( obj1. sayName == obj2. sayName)
function Person ( name, age ) {
this . name = name
this . age = age
this . sayName = fun
}
function fun ( ) {
alert ( this . name)
}
var p1 = new Person ( "wo" , 19 )
var p2 = new Person ( "ni" , 20 )
console. log ( p1. sayName == p2. sayName)
原型对象
function myClass ( ) { }
myClass. prototype. a = 1
var mc = new myClass ( )
var mc2 = new myClass ( )
console. log ( mc. __proto__ == myClass. prototype)
mc. a = 2
console. log ( mc. a)
console. log ( mc2. a)
垃圾回收
var obj = new Object ( )
obj = null
三 数组对象
数组字面量
var arr = new Array ( )
console. log ( typeof arr)
var arr1 = [ ]
var arr = new Array ( 1 ,2 ,3 )
var arr1 = [ 1 ,2 ,3 ]
arr= [ 10 ]
arr1 = new Array ( 10 )
forEach
var arr = [ 1 ,2 ,3 ]
arr. forEach ( function ( value, index, obj ) {
console. log ( a)
}
slice
var arr = [ 1 , 2 , 3 , 4 , 5 ]
var ans = arr. slice ( 1 ,3 )
var ans = arr. slice ( 1 )
var ans = arr. slice ( - 3 , 4 )
splice
var arr = [ 1 , 2 , 3 , 4 , 5 ]
var ans = arr. splice ( 1 ,2 )
var ans = arr. splice ( 1 , 0 , "tinajia" )
concat
var arr1 = [ 1 , 2 , 3 , 4 , 5 ]
var arr2 = [ 1 , 2 , 3 , 4 , 5 ]
var arr3 = [ 1 , 2 , 3 , 4 , 5 ]
var ans = arr1. concat ( arr1, arr2, "xin" , "de" )
join
var arr1 = [ 1 , 2 , 3 , 4 , 5 ]
var ans = arr1. join ( '' )
reverse
var arr1 = [ 1 , 2 , 3 , 4 , 5 ]
arr1. reverse ( )
sort
var arr1 = [ 1 , 2 , 3 , 4 , 5 ]
arr1. sort ( function ( a, b ) {
return a- b
} )
console. log ( arr1)
call和apply
function fun ( a, b ) {
console. log ( a)
console. log ( b)
console. log ( this . name)
}
var obj = { name: "na" }
fun . apply ( )
fun . call ( )
fun ( )
fun . call ( obj)
fun . apply ( obj)
fun . call ( obj, 1 , 2 )
fun . apply ( obj, [ 1 , 2 ] )
arguments
function fun ( ) {
console. log ( arguments. length)
console. log ( arguments[ 0 ] )
console. log ( arguments. callee)
}
fun ( "hello" , 1 )
Date
var d = new Date ( )
var d2 = new Date ( "1/12/2019 17:45:00" )
time = Date. now ( )
console. log ( time)
四 包装类
var num = new Number ( 3 )
var str = new String ( 'he' )
var bool = new Boolean ( true )
console. log ( typeof num)
console. log ( typeof str)
console. log ( typeof bool)
num. hello = "hello"
五 字符串
var str= "hello" ;
console. log ( str. charAt ( 3 ) ) ;
console. log ( str. charCodeAt ( 3 ) ) ;
console. log ( str. charAt ( 6 ) ) ;
console. log ( String. fromCharCode ( 73 ) )
var ans = str. concat ( "str1" , "str2" )
console. log ( str. indexOf ( "ll" , 2 ) ;
console. log ( str. indexOf ( "o" , 4 ) ;
console. log ( str. slice ( 1 , 3 ) ) ;
console. log ( str. slice ( 1 ) ) ;
console. log ( str. slice ( - 3 ) ) ;
console. log ( str. slice ( - 3 ,- 1 ) ) ;
console. log ( str. substring ( - 2 , 5 ) ) ;
console. log ( str. substring ( 5 , - 2 ) ) ;
console. log ( str. substr ( - 2 , 5 ) ) ;
var arr= 'wewew-dad-werg' ;
var ans = arr. split ( '-' )
var ans1 = arr. split ( '' )
console. log ( ans[ 0 ] ) ;
console. log ( ans. length) ;
var tel= "adad-faf" ;
console. log ( tel. replace ( '-' , ' ' ) ) ;
六 正则表达式
正则表达式基础
var reg = new RegExp ( 'ab' , 'i' )
console. log ( typeof reg)
var ans = reg. test ( 'abc' )
var ans = reg. test ( 'bc' )
var reg = / a / i
reg = / a|b|c /
reg = / [ab] /
reg = / [A-Z] / i
reg = / [A-z] /
reg = / [^ab] /
reg = / [^0-9] /
console. log ( reg. test ( 'a' ) )
reg = / a{3} /
console. log ( reg. test ( 'aaab' ) )
reg = / (ab){3} /
console. log ( reg. test ( 'ababab' ) )
reg = / ab{1,3}c /
console. log ( reg. test ( 'abbc' ) )
reg = / ab{3,}c /
console. log ( reg. test ( 'abbbbc' ) )
reg = / ab+c /
console. log ( reg. test ( 'abbbbc' ) )
reg = / ab*c /
console. log ( reg. test ( 'ac' ) )
reg = / ab?c /
console. log ( reg. test ( 'abc' ) )
reg = / ^a /
console. log ( reg. test ( 'abbbbc' ) )
reg = / a$ /
console. log ( reg. test ( 'abbba' ) )
reg = / ^a$ /
console. log ( reg. test ( 'a' ) )
reg = / ^a|a$ /
console. log ( reg. test ( 'abb' ) )
reg = / ^1[3-9][0-9]{9}$ /
console. log ( reg. test ( '14220055667' ) )
reg = / . /
console. log ( reg. test ( 'adad' ) )
reg = / \. /
console. log ( reg. test ( 'a..' ) )
console. log ( '\\' )
reg = / \\ /
console. log ( reg. test ( 'b.w\\' ) )
reg = / \bchild\b /
console. log ( reg. test ( 'my child' ) )
console. log ( reg. test ( 'mychild' ) )
var str = ' hel lo '
str = str. replace ( / ^\s*|\s*$ / g , '' )
字符串与正则表达式
var str = '1a2b3c4d5e'
var ans = str. split ( / [A-z] / )
var ans = str. search ( 'b3' )
var ans = str. search ( / a[1bc]c / )
var ans = str. match ( / [A-z] / g )
var ans = str. match ( / [a-z] / ig )
var ans = str. replace ( / [a-z] / ig , '!!!' )