您的位置:首页 > Web前端 > JavaScript

[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属性或方法的描述

例:

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为定时检测
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: