函数的定义方法
//函数声明的定义
function sum(x,y){
return x+y
}
console.log(sum(1,2));
//函数表达式的形式
let jian = function(x,y){
return x-y
}
console.log(jian(5,2));
//构造函数的形式
const sum1 = new Function('x' , 'y' , 'return x + y' )
console.log(sum1(1,2));
this指向问题
var objList = {
name: 'methods',
getSum: function() {
console.log(this)
}
}
objList.getSum()//指向objlist,谁调用指向谁
function foo() {
console.log(this);
}
foo.apply(undefined);//指向winodw,如果是null,也是一样
foo.call(objList);//指向objlist
call apply bind方法
let obj={
name:"潘晨阳",
age:18,
getsum(a,b){
console.log(`我叫${this.name},今年${this.age}岁啦!!!,来自${a},去${b}`);
}
}
obj.getsum("南京","安徽")//我叫潘晨阳,今年18岁啦!!!,来自南京,去安徽
let obj1={
name:"宋星月",
age:20
}
obj.getsum.call(obj1,"安徽","南京")//我叫宋星月,今年20岁啦!!!,来自安徽,去南京
obj.getsum.apply(obj1,["安徽","南京"])//我叫宋星月,今年20岁啦!!!,来自安徽,去南京
obj.getsum.bind(obj1,"安徽",'南京')()//我叫宋星月,今年20岁啦!!!,来自安徽,去南京
obj.getsum.bind(obj1,["安徽","南京"])()//我叫宋星月,今年20岁啦!!!,来自安徽,南京,去undefined
这里要注意的是:call是传递的是一个参数列表,apply传递的是一个数组,bind不会立即执行,而是返回一个函数,需要手动调用
二进制 十进制 转换
let num = 65
let str = num.toString(2) //10进制转二进制
console.log(parseInt(str,2));//二进制转10进制