前端题目详解——2019/12/5

Math.max.apply(null,arr)相当于函数Math.max函数被window调用

			var arr=[1,4,2,6,7];
			console.log(Math.max.apply(null,arr));//7,null/undeinfed的时候,默认指向window对象
			//其实Math.max()就相当于一个函数,然后这个函数被调用的对象指向window
			console.log(Math.max(3,5,1,5,7));//7
			console.log(Math.max(arr));//NaN
			//Math.max方法里面的参数应该是数值,不应该是数组,如果要传递数组就要用apply
			
			var a=10;
			function one(){
				console.log(this.a)
			}
			one.call(null);//10
			//其实就是 函数.call(null) => window.函数

打开一个新窗口

  • 使用window.open()函数,第一个参数为网址地址或者文件路径,第二个参数是窗口名字,window.open('www.baidu.com','win2')
  • 详细参数解析:
    1. 第一个参数是URL地址或者文档路径
    1. 第二个参数是窗口名称。可选
    1. 第三个参数是窗口的参数信息,可选
    1. 第四个参数是窗口是否作为历史记录,可选,false/true

判断一个对象是否属于数组,最好怎么做?

  1. typeof(arr),typeof返回的是基本数据类型及object,不会详细到array的,所以不行
  2. arr instanceof Array,这一点还不透彻,说的是在多iframe/window环境下,通过Instanceof来识别对象是否属于数组会出错
  3. arr.toString,直接使用toString函数自然是数组有什么就返回什么了,例如[1,2] => '1,2'
  4. Object.prototype.toString.call(arr) === '[object Array]';这才是正确的
			var obj={};
			console.log(obj.__proto__)
			var arr=[2,3];
			console.log(arr.toString());
			console.log(arr instanceof Array);//true
			
			console.log(Object.prototype.toString.call(arr));//数组对象有prototype
			//[object Array]
			function one(){
				console.log('函数实例对象有prototype?')
			}
			console.log(Object.prototype.toString.call(one));//[object Function]
			var child=new one();
			console.log(Object.prototype.toString.call(child));//[object Object]
			console.log(child.prototype);//undefined
			// 需要注意的是,_proto_属性是所有对象都有的,而prototype属性是只有函数才有的,实例对象没有!
			
			
			console.log(Object.__proto__)
			console.log(Object.prototype);
			console.log(Object.prototype.toString);//这就是一个函数!!
			console.log(Object.prototype.toString());//该函数返回的是一个对象的原型的字符串
			//注意,上面之所以用Object.prototype.toString.call(child)有效
			//是因为Object.prototype.toString就是被调用的函数,相当于 child.函数
			// 所以这样的toString自然是没错的,因为不是像我之前想的那样改成child.prototype.toString
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值