(一)

175 阅读3分钟

1. new对象做了什么?

  • 创建一个新对象
  •  将新对象的_proto_属性指向构造函数的原型对象
  • 将构造函数的作用域赋给新对象(将this指向新对象)
  • 执行构造函数内部的代码,将属性添加给this新对象
  • 返回新对象

2. window.onload  和 document.ready的区别

  • window.onload  是页面资源(dom树和图片等资源)都加载完成执行
  • document.ready  是dom树加载完之后执行
  • document.onload 是在结构和样式加载完之后执行

3. H5如何兼容iPhone X的刘海

4. ES5的继承

function Parent() {
	this.a = '111',
	this.sing = function() {
		console.log('sing')
		// console.log(this)
	}
}
var pa = new Parent();
// pa.sing()
function Stu() {
			
}
		
Stu.prototype = new Parent();
		
var st = new Stu();
st.sing()

function Person() {
		
    this.name = "猪猪";
    this.age = 10;
		        
}
function show() {
		
	alert(this.name + ":" + this.age);
		
}
//实例化
var per = new Person();
		    
//show函数继承per的属性
show.apply(per);

5. em  和 rem

  • em 是根据基准来缩放字体大小,不是固定的,会继承父级元素的字体大小
  • rem  相对于根元素(html)
  • IE6-IE8 不支持rem和em,为了兼容性将rem和em和px一块使用

6. cookie

  • 记录用户的登录信息
  • 默认过期时间是一次会话(即浏览器被关闭),但要是通过expires设置了过期时间的话,就按照这个时间(超过就删除)
  • 默认不会保存任何数据(4KB左右)
  • 作用范围:同一浏览器的同意路径下访问(同一浏览器,默认下一级也可访问,上一级的话,需配置path)

7. 同源策略

  • 协议,端口,域名都相同

8. 选择器

  • 选择3的倍数的子元素  :nth-child(3n)
  • 奇数,偶数    :nth-child(odd)       :nth-child(even)

9. vue---数据拦截

  • 首先判断是否是对象,若是对象的话,则遍历key值,定义一个函数,传三个值(拦截目标对象,key,value),然后通过object.defineproperty,传三个参数(目标对象,key,{set,get函数})
  • 其次判断是否是数组,若是数组的话,看是否是那七个方法,若是,直接通知更新,否则,则需要通过set,get来进行更新

10. 阻止事件冒泡

  • e.stopPropagation()
  • e.cancelBubble = true

11. img图片实现等比例缩放

img {
	width: auto;
	height: auto;
	max-width: 200px;
	max-height: 200px;
}

若超出父元素的话,给父元素设置overflow:hidden;

IE6不兼容:

max-width:200px;
_width:expression(this.width > 200 ? "200px" : this.width);

12. 跨域问题

协议,域名,端口

mock server      fake  api  (模拟接口)

  • jsonp----ajax存在跨域安全问题但是script标签不存在这类问题
  • cors
  • iframe(不推荐)
  • 反向代理

  

13. this(严格模式)(参考:www.jb51.net/article/118…

  • 全局作用域下,this指向window

"use strict";
console.log(this)
setTimeout(function() {
    console.log(this)
},100)

  • 全局作用域下,函数的this指向undefined

testStatic()
function testStatic() {
    console.log(this)
}

  • 构造函数中的this,指向该构造函数创建的对象

function Parent() {
	this.a = '111',
	this.sing = function() {
		console.log('sing')
		console.log(this)//指向Parent
	}
}
var pa = new Parent();
pa.sing()

  • 对象函数中this,指向调用函数的对象实例

var obj = new Object();
obj.p = 'tck'
obj.song = function() {
	console.log(this)//{p:tck,song:f}
}
obj.song()

  • 事件处理中的this,指向触发事件的对象

document.getElementById('app').onclick = function() {
	console.log(this)
}

  • 内联函数的this,两种情况,一种时undefined,一种是指向该元素

<button onclick="alert((function(){'use strict'; return this})());">内联事件处理1</button>
<!-- 警告窗口中的字符为undefined -->
<button onclick="'use strict'; alert(this.tagName.toLowerCase());">内联事件处理2</button>
<!-- 警告窗口中的字符为button -->

14. 箭头函数的this

  • 函数体内的this,指向定义时所在的对象,并不是使用时所在的对象
  • 不可以new(即不可以作为构造函数)
  • this的指向是固定的

// 指向window
var ok =  {
			
	fn :() =>{
		console.log(this)
	}
}
ok.fn()