# 20191130 ![js](https://img.shields.io/badge/language-js-orange.svg) 给内置对象String添加原型方法,相当于在改变String对象的源码 ```js var str = new String('abcdef') String.prototype.myReverse = () => { var str = '' for( var i = this.length -1 ; i >= 0; i--) { str += this[i] } return str } console.log(str.myReverse) ``` 给内置对象Array添加原型方法 ```js Array.prototype.mySort = () => { for(var i = 0; i < this.length; i++) { for(var j = 0; j < this.length - i; j ++) { if(this[j] > this[j+1]) { var temp = this[j] this[j] = this[j +1] this[j+1] = temp } } } return this } var arr = new Array(1,2,3,4,5,6,7,8) console.log(arr.mySort()) ``` 将局部变量变成全局变量 ```js // 匿名函数自执行 (function(){ console.log('哈哈哈') })(); (function(){ console.log('哈哈哈') }()); // 开始 (function(){ var num = 100 })(); console.log(num) // 报错,不是undefined // 传参方式 (function(win){ var num = 100 win.n = num })(window); console.log(n) // 打印100 ``` undefined的情况 已定义未赋值 对象没定义的属性 函数并没有创建返回值 全局不一定是window 还可能使global ## 生成随机数 ```js // 生成随机数 -> 创建一个随机数对象 ---- 属性无 / 方法 -> 生成随机数 // 构造函数Random ---> 局部转全局 ---> 暴露给window ---> 实例化 ---> 调用方法 ---> 完成生成随机数 (function (window) { // 创建随机数对象 function Random() { } Random.prototype.getRandom = (min, max) => { // 0~5整数 return Math.floor(Math.random() * (max - min) + min) } window.Random = Random }(window)); var random = new Random() var num = random.getRandom(0, 5) console.log(num) ``` js获取元素的方法 通过ID获取(getElementById) 通过name属性(getElementsByName) 通过标签名(getElementsByTagName) 通过类名(getElementsByClassName) 通过选择器获取一个元素(querySelector) 通过选择器获取一组元素(querySelectorAll) 获取html的方法(document.documentElement) document.documentElement是专门获取html这个标签的 获取body的方法(document.body) document.body是专门获取body这个标签的