[JS]一些函数的用法
2017-06-07 00:00
267 查看
1.Array.prototype.concat.apply
可用于数组降维
例:Array.prototype.concat.apply([], [["a"], ["b"]]) //['a','b']
2.Object.prototype.toString.call
用于精准区分参数类型
例:
var val = []
Object.prototype.toString.call(val) // "[object Array]"
3.apply
将一个数组传递给一个不接受数组作为参数的函数
例:
Math.max.apply(null, [10, -1, 5]) //10
4.Object.defineProperty(a,b,c) //es5
重写a对象b属性或方法为特性
特性:descriptor 属性定义或修改的属性描述
5.Object.getOwnPropertyDescriptor(a,b)
获取a对象b属性或方法的描述
例:
返回:
如果存在set或get时不存在value和writable属性,多出get和set属性
实现响应式设计会用到上述2个方法,重写data对象所有属性的set和get方法。做到改变value就可以触发事件,实现对data内属性的监听,不支持es5可以用Object.prototype.__defineGetter__和Object.prototype.__defineSetter__实现监听。
vue用以上方法实现,angular2以上为zone实现,angular1为定时检测
可用于数组降维
例:Array.prototype.concat.apply([], [["a"], ["b"]]) //['a','b']
2.Object.prototype.toString.call
用于精准区分参数类型
例:
var val = []
Object.prototype.toString.call(val) // "[object Array]"
3.apply
将一个数组传递给一个不接受数组作为参数的函数
例:
Math.max.apply(null, [10, -1, 5]) //10
4.Object.defineProperty(a,b,c) //es5
重写a对象b属性或方法为特性
特性:descriptor 属性定义或修改的属性描述
5.Object.getOwnPropertyDescriptor(a,b)
获取a对象b属性或方法的描述
例:
var obj = { a : "a" } Object.getOwnPropertyDescriptor(obj,"a")
返回:
{configurable:true, enumerable:true, value:"a", writable:true }
如果存在set或get时不存在value和writable属性,多出get和set属性
实现响应式设计会用到上述2个方法,重写data对象所有属性的set和get方法。做到改变value就可以触发事件,实现对data内属性的监听,不支持es5可以用Object.prototype.__defineGetter__和Object.prototype.__defineSetter__实现监听。
vue用以上方法实现,angular2以上为zone实现,angular1为定时检测
相关文章推荐
- 关于js中小问题与一些简单函数的用法
- 总结一些js自定义的函数
- prototype.js常用函数及其用法
- Prototype.js的一些简便用法
- prototype.js常用函数及其用法
- prototype.js常用函数及其用法
- JS中的一些扩充函数,判断输入的内容
- 基础的prototype.js常用函数及其用法
- 一些常用的JS函数
- prototype.js常用函数及其用法
- 工作中的一些小记录(命令用法、函数等)
- 总结一些js自定义的函数
- 总结一些js自定义的函数
- 总结一些js自定义的函数
- 去年写的测试GDAL用法的一些函数
- 一些又有的js函数
- prototype.js常用函数及其用法
- prototype.js常用函数及其用法
- prototype.js常用函数及其用法
- prototype.js常用函数及其用法