var firstName = 'Jennifer'
var lastName = ' Lawrence'
var holeName = firstName.concat(lastName);
// "Jennifer Lawrence"
var str = "hello world";
var result = str.slice(3,7);
// lo w 参数中第一个作起始位置
// 对于负参,加上length
// [)
var str = "hello world";
var result = str.slice(7,3);
// lo w 参数中较小的作为起始位置
// 对于负参,变0
// [)
var str = "hello world";
var result = str.slice(3,7);
// lo worl 第二个参数作截取的长度
// 仅对于第一个负参,加上length
// [)
var str = "hello world";
var result1 = str.indexOf("o") // 4
var result2 = str.lastIndexOf("o") // 7
var result3 = str.indexOf("o",6) // 7
var result4 = str.lastIndexOf("o",6) // 4
var str = " hello world ";
var result = str.trim()
// hello world
var str = "cat,bat,sat,fat";
var result = str.replace("at","one");
// cone,bat,sat,fat
// 只替换第一个
var str = "red,blue,green,yellow";
var res1 = str.split(",")
// ["red", "blue", "green", "yellow"]
var res2 = str.split(",", 2);
// ["red", "blue"] 第二个参数用来限制数组大小
var arr = ["A", "B", "C", "D"]
var result = arr.join("->")
// A->B->C->D
for (let codePoint of 'foo') {
console.log(codePoint)
}
var s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
var result = 'abc'.charAt(0) // b
var pad1 = "x".padStart(5, 'ab') // 'ababx'
var pad2 = "x".padStart(4, 'ab') // 'abax'
// 头部补全
var pad3 = "x".padEnd(5, 'ab') // 'xabab'
var pad4 = "x".padEnd(4, 'ab') // 'xaba'
// 尾部补全
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
'3': 'd',
length: 4
};
let arr1 = Array.from(arrayLike);
// ['a', 'b', 'c']
var arr2 = Array.from([1, 2, 3], (x)=>x*x)
// [1, 4, 9]
var arr3 = Array.of(3, 11, 8) // [3,11,8]
var arr4 = Array.of(3) // [3]
var arr5 = Array.of(3).length // 1
var arr6 = [33, 44, 55, 66, 77, 88].copyWithin(1, 4, 6)
// [33,77,88,66,77,88],会改变原数组 [)
// 1是起始位置,4-6为区间,半开半闭
var arr7 = [1, 5, 10, 15].find(function(value, index, arr) {
return value > 9;
})
// 10
var arr8 = [1, 5, 10, 15].findIndex(function(value, index, arr) {
return value > 11;
})
// 3
var index = [NaN].findIndex(y => Object.is(NaN, y))
//0 可以找到NaN
for( let index of ["L", "X", "D", "Y"].keys()){
console.log( index )
}
//0 1 2 3
for( let value of ["L", "X", "D", "Y"].values()){
console.log( value )
}
//L X D Y
for( let [index, value] of ["L", "X", "D", "Y"].entries()){
console.log( index +" : "+value )
}
// 0:L 1:X...
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, NaN].includes(NaN); // true
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[,'z'].forEach((x,i) => console.log(x));
// z
var arr10 = [2,,9].filter(x => x>6)
// [9]
var arr11 = [,5,'a'].every(x => x==='a')
// true
var arr12 = [,'a'].some(x => x !== 'a')
// false
var arr13 = ['pr','a'].map( x => x + '_' )
// ["pr_", "a_"]
var arr14 = [,'a',undefined,'~'].join('#')
// "#a#~"
var arr15 = [,'a',undefined,'~'].toString()
// ,a,,~
var holeName = "LiuYashion"
var location = "Shenzhen"
var people1 = { holeName }
// people { holeName:"LiuYashion" }
var people2 = { holeName, location }
// { holeName:"LiuYashion", location:"ShenZhen" }
var people3 = {
holeName:"LiuYashion",
location,
saysomething(){
console.log('success');
}
}
// {
// holeName:"LiuYashion",
// location:"ShenZhen"
// saysomething:function(){
// console.log('success')
// }
// }
let propKey = 'age';
let person = {
[propKey]: 18,
['is' + 'Male']: true
};
// { age:18, isMale:true }
// 仅限string类型,object类型会被直接转换成"[object object]"
Object.is('foo', 'foo')
// true
Object.is({}, {})
// false
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
Object.assign方法实行的是浅拷贝,而不是深拷贝.如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用
var people = { name:'Liu' }
var locate = {
domicile:'ShenZhen',
home:{
province:'Hubei',
city:'YiChang'
}
}
var people = Object.assign(people, locate)
// {
// name: "Liu",
// domicile: "ShenZhen",
// home: {
// province:'Hubei',
// city:'YiChang'
// }
// }
Object.defineProperty(people, 'type', {
enumerable: false,
value: 'invisible'
})
// log日志可看type:'invisible',但其不能被遍历出
Object.keys(people)
// ["name", "domicile", "home"]
Object.values(people)
// ["name", "domicile", "home"]
Object.getOwnPropertyNames(people)
// ["name", "domicile", "home", "type"]
Object.assign("Liu")
Object("Liu")
// {0: "L", 1: "i", 2: "u"}
// 两个本质相同
Object.assign([1, 2, 3], [4, 5])
// [4, 5, 3]
let objtest = { foo: 123 }
var dis = Object.getOwnPropertyDescriptor(objtest, 'foo')
// {
// value: 123,
// writable: true,
// enumerable: true,
// configurable: true
// }
var Object = { keys: 'index8', values: 2, entries: 3 }
let {keys, values, entries} = Object;
console.log(keys)
// 'index8'
Object.assign([1, 2, 3], [4, 5])
// [4, 5, 3]