用于遍历对象或数组的属性。遍历时会枚举原型链上的所有属性,过滤这些属性的方式是使用 hasOwnProperty函数。
Object.prototype.method=function(){
console.log(this);
}
var myObject={
a:1,
b:2,
c:3
}
for (var key in myObject) {
if(myObject.hasOwnProperty(key)){
console.log(key);
}
}
Array.prototype.unique = function() {
var obj = {}
return arr.filter((item, index, arr) => {
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
})
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
console.log(arr)
console.log(arr.unique())
function getBrowser() {
let obj = {}
obj.appName = navigator.appName
obj.version= navigator.appVersion
obj.code = navigator.appCodeName
obj.userAgent = navigator.userAgent
return obj
}
console.log(getBrowser())
ev.stopPropagation();
ev.cancelBubble = true; // 旧IE
(1)原型就是一个属性,这个属性是构造函数的属性,构造函数是用来制造用来出对象的,是构造函数制造出来的公共祖先,后面所有的对象都会继承原型的属性与方法(原型也是个对象)
(2)__proto__这个是用来查看原型的,这个是对象的属性,这个属性可以查看但是不能修改(隐式属性)
(3)prototype 设置原型,这个是构造函数的属性
(4)proto === constructor.prototype
(5)原型链就是__proto__连起来的链条,当js查找对象属性时,先查找对象本身是否存在该属性,不存在,则会在原型链上找,但不会查找自身prototype。
GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符
POST:一般用于修改服务器上的资源,对所发送的信息没有限制Get 是通过地址栏来传值
Post 是通过提交表单来传值
在以下情况中,请使用POST 请求:
当浏览器在下载js时,会阻止其他一切活动,比如资源下载,内容呈现等。直到js下载、解析、执行完毕后才开始继续并行下载其他资源和内容呈现。
嵌入js会阻塞所有内容呈现,外部js会阻塞其后内容呈现。
当css后面跟着嵌入的js,该css就会出现阻塞后面资源下载的情况。而把嵌入的js放在css前面,就不会出现阻塞的情况。
解决方式:
协议,域名,端口相同,同源策略是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性。
function sort(arr) {
if(arr.length === 1) {
return arr
}
let less = []
let generator = []
let centerIndex = Math.floor(arr.length/2)
let centerValue = arr.splice(centerIndex,1)[0]
console.log(arr)
for(let i = 0;i
利用opacity: 0 设置透明度为0;(占位置)
利用visibility:hidden;(占位置)
利用display:none;(不占位置)
伪类用于在页面中的元素处于某个状态时,为其添加指定的样式。
伪元素会创建一个抽象的伪元素,这个元素不是DOM中的真实元素,但是会存在于最终的渲染树中,我们可以为其添加样式。
vue为了保证每个实例上的data数据的独立性,规定了必须使用函数,而不是对象。
因为使用对象的话,每个实例(组件)上使用的data数据是相互影响的,这当然就不是我们想要的了。对象是对于内存地址的引用,直接定义个对象的话组件之间都会使用这个对象,这样会造成组件之间数据相互影响。