今天完成的事情: 学习了 coding (编码)技巧;;JavaScript valueOf()方法;;
明天计划的事情:拒绝划水,学习学习!!!
收获:
JavaScript valueOf()方法:
定义与用法:
valueOf () 的方法返回 Math 对象的原始值,该原始值有Math 对象派生的所有对象继承。
valueOf () 方法通常由JavaScript 在后台自动调用,并不显示地出现在代码中。
语法: mathObject.valueOf () ;
总结:
1),同样是字符串,则直接进行字符串值得比较;
2),是数字,则需要将字符串转化为数字,然后进行比较;
3),有布尔类型,则要将布尔类型转化为 0 或 1 ,然后进行比较;
4),对象或数组类型,则需要调用toString () 或者 valueOf () 方法转化为简单的类型,然后进行比较,;
对象转化为简单类型时会优先调用valueOf 方法,则会在调用 toString 方法,最终得到比对结果。
但需要注意的一点是Date 对象不满足上述的规则,Date 对象的toString 和 valueOf 方法都是重新定义过的,默认会调用toString 方法。
学到的其中一部分
// 数组的对象结构
const str = "2000,wangloong,boy,21"
const { 1: name, 2: sex, 3: age } = str.split(',') // 1、2、3为 split之后的数组下标; name、sex、age为指定的变量,值分别为wangloong、boy、21;
console.log(name, sex, age) //kangkang boy 1997
// 创建纯对象
const obj = {}
console.log(obj)
console.log(obj.constructor)
console.log(obj.toString)
console.log(obj.hasOwnProperty)
const api = Object.create(null)
console.log(api) // {}
console.log(api.constructor) // undefined
console.log(api.toString) // undefined
console.log(api.hasOwnProperty) // undefined
// 没见过的valueOf
const abd = {
i: 1,
valueOf: function () {
if (this.i === 1) {
this.i++
return 1
} else {
return 2
}
}
}
if (abd == 1 && abd == 2) {
console.log(abd)
}
// 清空和拦截数组
// const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 这时候可能你会想到slice()和splice()
// slice()
// 返回一个索引和另一个索引之间的数据(不改变原数组), slice(start, end)有两个参数(start必需, end选填), 都是索引, 返回值不包括end
const arr_01 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
const arr2 = arr_01.slice(0, 5)
console.log(arr2)//[1,2,3,4,5]
// splice()
// 用来添加或者删除数组的数据, 只返回被删除的数据, 类型为数组(改变原数组)
const arr_02 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr_02.splice(5)
console.log(arr)//[1,2,3,4,5]
//最简单的清空和截短数组的方法就是改变 length 属性
const arr_03 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr_03.length = 5
console.log(arr_03)//[1,2,3,4,5]
arr_03.length = 0//清空数组
console.log(arr_03);
评论