简单测试一下😄😀😃🤔 🔷🔹 🔶🔸 ⭕✔ 🚩🏳️‍🌈 🔴🟠🟡🟢🔵🟣 emoji表情汇总1https://emoji.muan.co/ emoji表情汇总2https://www.emojiall.com/zh-hans
es6之 Object.assign()基本用法Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。 Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。 1234567const target = { a: 1 };const source1 = { b: 2 };const source2 = { c: 3 };Object.assign(target, source1, source2);console.log(target) // {a:1, b:2, c:3} 我们需要注意的是,如果目标对象和源对象有同名属性。或多个源对象有同名属性,则后面的属性会覆盖前面的属性。 1234567const target = { a: 1, b: 1 };const source1 = { b: 2, c: 2 };const source2 = { c: 3 ...
对原生AJAX 的简单封装:wink:我们先看一下JQuery的AJAX的使用。jQuery.ajax(url,[settings]) 参数: url:一个用来包含发送请求的URL字符串。 data [Object,String]类型:发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:[“bar1”, “bar2”]} 转换为 “&foo=bar1&foo=bar2”。 type [String]类型:(默认: “GET”) 请求方式 (“POST” 或 “GET”), 默认为 “GET”。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。 success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。 error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果 ...
es6之扩展运算符 (…) 简称三个点对象的扩展运算符理解对象的扩展运算符其实没有那么难,只要记住一句话就可以轻松掌握它:smiley: 对象中的扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 12let bar = { a: 1, b: 2 };let baz = { ...bar }; // { a: 1, b: 2 } 上面的代码就相当于 12let bar = { a: 1, b: 2 };let baz = Object.assign({}, bar); // { a: 1, b: 2 } **Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target**)。 Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。(如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性)。 Object.assign 的详 ...
源码index.html 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>天气预报</title> <link rel="stylesheet" href=" ...
定时器对队列的工作方式:当特定时间过去后将代码插人。注意,给队列添加代码并不意味着对它立刻执行,而只能表示它会尽快执行。设定一个150ms后执行的定时器不代表到了150ms代码就立刻执行,它表示代码会在150ms后被加入到队列中。如果在这个时间点上,队列中没有其他东西,那么这段代码就会被执行,表面上看上去好像代码就在精确指定的时间点上执行了。其他情况下,代码可能明显地等待更长时间才执行。 重复定时器: 这种重复定时器的规则有两个问题: (1)、 某些间隔会被跳过; (2) 、多个定时器的代码执行之间的间隔可能会比预期的小。假设,某个onclick事件处理程序使用setInterval()设置了一个200ms间隔的重复定时器。如果事件处理程序花了300ms多-点的时间完成,同时定时器代码也花了差不多的时间,就会同时出现跳过间隔且连续运行定时器代码的情况。 这个例子中的第1个定时器是在205ms处添加到队列中的,但是直到过了300ms处才能够执行。当执行这个定时器代码时,在405ms处又给队列添加了另外一个副本。在下一个间隔,即605ms处,第一个定时器代码仍在运行,同时在 ...
我们在开发中有时候会不经意的修改了别人的代码,可能会造成严重的后果,于是ES5定义了防篡改对象。但是要注意,一旦把对象定义为防篡改对象,就无法撤销了。 不可扩展对象默认情况下,所有对象都是可以扩展的。也就是说,任何时候都可以向对象中添加属性和方法。比如: 123456var person = { name: "阿清" } person.age = 14; console.log(person);//{name: "阿清", age: 14} console.log(person.age);//14 如果我们使用Object.preventExtensions() 方法可以改变这一行为。不能再添加属性或者方法。虽然不能扩展该对象,但是不影响原有的属性,原有的属性仍然可以进行修改或者删除。 123456789101112var person = { name: "阿清"}Object.preventE ...
函数绑定:在特定的 this 环境中,以指定参数调用另一个函数。常常与回调函数和事件处理程序一起使用一遍在将函数作为变量传递的同时保留代码执行环境。 12345678var handler = { name: "阿清", sayName: function(event) { alert(this.name); }};var btn = document.getElementById("btn");btn.addEventListener("click", handler.sayName, false) //undefiend 结果显示的是undefiend,这是因为没有保存handler .sayName() 的环境,所以 this 指向DOM按钮而非handler(在IE8中 this 指向window)。 解决方法:ES5为所有的函数定义一个原生的 bind() 方法。 12345678var handler = { name ...
我们想看两个例子: 123456789101112var name = "阿清", age = 18; var obj = { name: "阿广", objAge: this.age, myFun: function() { console.log(this.name + "年龄是" + this.age); } } console.log(obj.objAge); //18 obj.myFun(); //阿广年龄是undefined 123456var a = "小明"; function showname() { console.log(this.a); } showname(); //小明 由这两个例子可以看出来,第一个this ...
JavaScript内置的类型检测机制并非完全可靠。比如: 1var isArray = value instanceof Array; 以上代码要返回true,value必须是一个数组,而且还必须与Array构造函数在同个全局作用域中。(别忘了,Array是window的属性。)如果value是在另个frame中定义的数组,那么以上代码就会返回false。 解决方法: 众所周知,在任何值上调用Object原生的toString()方法,都会返回一个[obj ect NativeConstructorName] 格式的字符串。每个类在内部都有一个[ [Class]]属性,这个属性中就指定了上述字符串中的构造函数名。 由于原生数组的构造函数名与全局作用域无关,因此使用toString()就能保证返回一致的值。 123456789101112131415//检测是否是原生数组 function isArray(value) { return Object.prototype.toString.call(value) == " ...
公告
博客微信小程序版已上线,同步更新,请扫码浏览。🎉