js.object和function

Object

Object.assign() 可能是用的最多的方法了吧...

函数只是一个可以执行的值, 除此以外没有什么特别之处
我姓范叫范可申;

函数声明


function a() {
	alert(a.name) // 没有return或者return后面没有值, 返回值是undefined,
}
function sum(n1, n2 = n1) {
	return n1 + n2
}
sum(10)

函数表达式

var a = function () {}
匿名函数(拉姆达函数)

函数提升

if(a) {
	function a(){}; // 函数声明提升了,所以不要这样写
	var a = function() {} // 这样写没有问题
}
arguments.callee
var factorial = (function f(num) {
	if(num <= 1) { 
		return 1;
	} else {
		return num*f(num - 1);
	}
})

箭头函数的this指向它所在的环境,(如果环境还是箭头函数, 则继续向上)
箭头函数没有prototype 返回值 undefined
  1. 重复设置一个属性会报错
let obj = {

};
Object.defineProperties(obj, {
	name: {
		value: 'a'
	}
})
console.log(obj);
Object.defineProperties(obj, {
	name: {
		value: 'b'
	}
})

在这里插入图片描述

Q1. encodeURI 和 encodeURIComponents区别

URI - Uniform Resource Identifiers(通用资源标识符), 用UTF-8替代无效的字符, 让浏览器理解
encodeURI() 空格变为%20 解码 decodeURI
encodeURIComponent() 会转换所有的非标准字符 decodeURIComponent 转换查询串的参数
用于替换es3中的escape() unescape()方法, 因为这两个只能编码ASCII字符

Math

Math.round(Math.random()*5) + 10	 // ceil floor
Math.toFixed(2)
Math.pow(2, 4)
Math.sqrt(4) 平方根
!isNaN()
Number.isNaN() 区别 isNaN
Number.isInteger()

Date

		Date.now()
		+new Date()
		new Date().getTime()
		Date.parse()

深拷贝


JSON.parse(JSON.stringify(obj)) // JSON

var b = $.extend(true, [], obj)   // jquery 

function deepClone(obj){
    let newObj = Array.isArray(obj)?[]:{};
    if(obj && typeof obj==="object"){
        for(key in obj){
            if(obj.hasOwnProperty(key)){ //判断是否是实例属性, 而不在原型上找
                //判断ojb子元素是否为对象,如果是,递归复制
                if(obj[key]&&typeof obj[key] ==="object"){
                    newObj[key] = deepClone(obj[key]);
                }else{
                    //如果不是,简单复制
                    newObj[key] = obj[key];
                }
            }
        }
    }
    return newObj;
}    

数组降维/扁平化

递归或者转字符串

arr=[[1,3,4,5],[2,3,5]];
var arr1=[];
function addNum(e){
 	e.forEach(function(e){
	    if(typeof(e)!="number"){
	        e.forEach(function(e){
	            addNum(e);
	        })
	    }else{
	        arr1.push(e);
	    }  
    })
     
}
arr.forEach(function(e){
	addNum(e);
});

let arr=[2,3,3,4,[2,3,4,[13,3,[3,4,6],4]]];
String(arr).split(',') 

var arr1=[];
let arr=[2,3,3,4,[2,3,4,[13,3,[3,4,6],4]]];
for(var i=0;i<arr.length;i++){
   arr1[i]=eval(arr[i]);
}
console.log(arr1);     //[2, 3, 3, 4, 2, 3, 4, 13, 3, 3, 4, 6, 4];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值