ES5、ES6自学笔记( 四 )


字符串方法

>var str = "111";console.log(str); //111var str2 = str.trim();console.log(str); //111console.log(str2);//111var input = document.querySelector('input');var btn = document.querySelector('button');var div = document.querySelector('div');btn.onclick = function() {var str = input.value.trim();if (str === '') {alert('请输入内容');} else {console.log(str);console.log(str.length);div.innerHTML = str;}}
对象方法value: 设置属性的值 默认为: 值是否可以重写 。true | false 默认为: 目标属性是否可以被枚举(遍历) 。true | false 默认为 : 目标属性是否可以被删除或是否可以再次修改特性 true | false 默认为false
>var obj = {id: 1, name: '小米',price: 1999}// 给对象新增属性obj.num = 1000;// 修改属性obj.price = 99;console.log(obj);// 将对象属性名封装成一个数组返回var keys = Object.keys(obj);console.log(keys);// [id, name, price, num]// 添加和修改属性的方法Object.defineProperty(obj, 'num', {value: 1000})Object.defineProperty(obj, 'id', {writable: false // 此属性不能被修改})// 添加一个属性Object.defineProperty(obj, 'address', {value: '中国山东蓝翔技校xx单元',// 如果只为false 不允许修改这个属性值 默认值也是falsewritable: false,// enumerable 如果值为false 则不允许遍历, 默认的值是 falseenumerable: false,// configurable 如果为false 则不允许删除这个属性 不允许在修改第三个参数里面的特性 默认为falseconfigurable: false});
函数进阶 函数的定义和调用 函数声明方式关键字 (命名函数)函数表达式 (匿名函数)new ()
函数的定义:
//函数的定义方式// 1. 自定义函数(命名函数) function fn() {};// 2. 函数表达式 (匿名函数)var fun = function() {};// 3. 利用 new Function('参数1','参数2', '函数体');var f = new Function('a', 'b', 'console.log(a + b)');f(1, 2);// 4. 所有函数都是 Function 的实例(对象)console.dir(f);// 5. 函数也属于对象console.log(f instanceof Object);函数的调用:// 1. 普通函数function fun() {console.log("普通函数调用");}fun();fun.call();// 2. 对象的方法var obj = {show: function () {console.log("对象的方法调用");}}obj.show();// 3. 构造函数function Star() {};new Star();// 4. 绑定事件函数btn.onclick = function () {}// 点击这个按钮就可以调用函数// 5. 定时器函数setInterval(function () {}, 1000)// 每隔一秒钟调用此函数,也可以使用变量命来代替函数体// 6. 立即执行函数(function () {console.log('立即执行函数执行');})();// 只要加载到此处就自动调用
thiscall
// 1. call()var o = {name: 'andy'}function fn(a, b) {console.log(this);console.log(a + b);};fn.call(o, 1, 2);// call 第一个可以调用函数 第二个可以改变函数内的this 指向// call 的主要作用可以实现继承function Father(uname, age, sex) {this.uname = uname;this.age = age;this.sex = sex;}function Son(uname, age, sex) {Father.call(this, uname, age, sex);// 执行Father,但是Father中的this指向的是son}var son = new Son('刘德华', 18, '男');console.log(son);
apply
// 2. apply()var obj = {name: 'ljy'};function fn() {console.log(this);}fn.apply(obj); // 打印obj的指向// 1. 也是调用函数 第二个可以改变函数内部的this指向// 2. 但是他的参数必须是数组(伪数组)// 3. apply 的主要应用 比如说我们可以利用 apply 借助于数学内置对象求数组最大值 // Math.max();var arr = [1, 66, 3, 99, 4];var arr1 = ['red', 'pink'];// var max = Math.max.apply(null, arr);// Math.max方法不能传递一个数组过去,只能传递一个一个参数,所以我们可以使用apply的特性:第二个参数必须是数组 。从而可以将arr以一个数组的形式传递过去var max = Math.max.apply(Math, arr);var min = Math.min.apply(Math, arr);console.log(max, min);